03. april 2008 - 19:50Der er
9 kommentarer og 1 løsning
Warning mysql_fetch_array supplied argument is not a valid My
Hej eksperter. Jeg kan simpelthen ikke slippe af den med her fejl Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/trmeier/public_html/6_aflevering/index.php on line 59 Linje 59 er denne ---- while($row = mysql_fetch_array($result)) { echo "<tr><td>" . $row[0] . "</td><td>" . $row[1] . "</td><td>" . $row[2] . "</td></tr>"; //$row['count(iid)'] ----- Poster lige sammenhængen nedenfor. Er der nogen der har mod på at hjælpe? Det er muligt der er flere fejl.
//Vælg hvilken database der skal bruges $databasetabel = $_POST['database_tabel']; $db_select=mysql_select_db($databasetabel,$connection);//Opbyg et SELECT udtryk
$sogeord = $_POST['sogeord'];
$query = "SELECT p.navn, p.virksomhed, i.navn FROM p, i, ip WHERE ((navn LIKE \"%$sogeord%\") OR (virksomhed LIKE \"%$sogeord%\")) AND (p.pid = ip.pid) GROUP BY p.navn";
Man bruger ikke "-tegn i en SQL, men derimod '-tegn.
Ret:
$query = "SELECT p.navn, p.virksomhed, i.navn FROM p, i, ip WHERE ((navn LIKE \"%$sogeord%\") OR (virksomhed LIKE \"%$sogeord%\")) AND (p.pid = ip.pid) GROUP BY p.navn";
- til:
$query = "SELECT p.navn, p.virksomhed, i.navn FROM p, i, ip WHERE ((navn LIKE '%$sogeord%') OR (virksomhed LIKE '%$sogeord%')) AND (p.pid = ip.pid) GROUP BY p.navn";
Har fulgt begge dine råd og det hjalp da. Nu har jeg fået gjort således at det virker korrekt. Nu er mit problem at det bruger usansynligt man ressourser. Når den skal køre en ekstra query sålænge den stadig finder resultater. Er der nogen der kan se hvordan jeg kan skrive nedenstående så det ikke tager en evighed for hver søgning. Evt. nøjes med en enkelt query.
$query = "SELECT p.navn, p.virksomhed, p.pid FROM p,i,ip WHERE ((p.navn LIKE '%$sogeord%') OR (p.virksomhed LIKE '%$sogeord%')) GROUP BY p.navn"; // AND (p.pid = 'ip.pid')
$result = mysql_query($query,$connection) or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$result2 = mysql_query("SELECT count(iid) FROM ip WHERE ip.pid = '$row[2]'");
Rådet mht. at udskrive eventuelle SQL fejl er nu mere tænkt til at hjælpe med at finde fejl i fremtiden. Det ændre derudover ikke ved funktionaliteten.
> ... Evt. nøjes med en enkelt query.
F.eks. sådan?
$query = " SELECT p.navn, p.virksomhed, count(ip.pid) FROM p, ip WHERE (p.navn LIKE '%$sogeord%' OR p.virksomhed LIKE '%$sogeord%') AND AND p.pid = ip.pid GROUP BY p.navn";
$result = mysql_query($query, $connection) or die(mysql_error());
Sorry ja troede jeg havde skrevet et svar. Men det blev glemt. Fandt frem til et brugbart resultatet ud fra dit sidste svar. Ja ved godt at tabelnavnene er et irritationsmoment men det var et krav på mit uddannelsessted at tabellerne skulle være navngivet sådan i denne opgave. Fik løst opgaven med din query tror jeg faktisk. Ser lige om jeg kan finde det endelige resultat og poste det. Smid meget gerne et svar. Beklager ventetiden og tusind tak for din hjælp.
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.