Avatar billede pluth Nybegynder
16. august 2010 - 13:10 Der er 9 kommentarer og
1 løsning

PHP problem

Hej Eksperter,

Når jeg kører nedenstående kode, kommer der denne fejl. Kan i hjælpe mig med hvad det skyldes ?

Warning: sqlsrv_fetch_array() expects parameter 1 to be resource, boolean given in

$tsql = "SELECT * FROM tbl";
$stmt = sqlsrv_query( $conn, $tsql);

while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC)) {

// Antal emner tilbage
$result = sqlsrv_query($conn, "SELECT count(*) FROM tbl_c");
$count = sqlsrv_fetch_array($result);

    Print ("<tr><td><a href=\"d.php?p=".$row["id"]."\">".$row["name"]."</a></td>");
    Print ("<td>0</td><td>0</td><td>$count[0]</td><td>0</td>");
}
Print ("</tr></table>");
}
Avatar billede erikjacobsen Ekspert
16. august 2010 - 13:32 #1
Har du en lovlig $conn ?  Prøv at skrive den ud, med fx  print_r($conn);
Avatar billede erikjacobsen Ekspert
16. august 2010 - 13:34 #2
Eller hov: du laver to samtidige forespørgsler på samme connection. Må man det?
Avatar billede pluth Nybegynder
16. august 2010 - 13:37 #3
Jeg har conn - Jeg har en if($conn) { } else { echo "Connection could not be established.\n"; }

Jeg får resultat i den nederste, men alle andre er tomme. Det er meget underligt.
Avatar billede erikjacobsen Ekspert
16. august 2010 - 13:40 #4
Du prøver bare med 2 connections
Avatar billede jasman Nybegynder
16. august 2010 - 13:47 #5
Skal

$count = sqlsrv_fetch_array($result);

evt. være:

$count = sqlsrv_fetch_array($result, SQLSRV_FETCH_ASSOC));

?

I øvrigt kunne du vel egentlig flytte

// Antal emner tilbage
$result = sqlsrv_query($conn, "SELECT count(*) FROM tbl_c");
$count = sqlsrv_fetch_array($result);

uden for din while løkke,

ellers bliver den jo udført ligeså mange gange som der er records i dit datasæt for

SELECT * FROM tbl
Avatar billede pluth Nybegynder
16. august 2010 - 15:13 #6
Der skulle 2 forskellige conn til :) Mange tak for hjælpen.

Smid et svar og du får point.
Avatar billede erikjacobsen Ekspert
16. august 2010 - 15:22 #7
Nej tak.

Men du skal nu lære at gøre det smartere. Det ser ud til at det du ønsker at få ud af databasen kan klares med en JOIN og en GROUP BY. Tænk over det .... så har du en meget mere effektiv løsning.
Avatar billede pluth Nybegynder
16. august 2010 - 15:27 #8
Har du mulighed for at give mig et lille eks ?
Avatar billede erikjacobsen Ekspert
16. august 2010 - 17:11 #9
Noget i retning af, ikke prøvet:

  select id,name,count(*) from tbl join tbl_c on tbl_c.customer_id=tbl.id GROUP ON id,name

(taget fra det andet spørgsmål)
Avatar billede pluth Nybegynder
16. august 2010 - 20:23 #10
Jeg kigger på det. Tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester