Avatar billede Claus Mester
26. marts 2004 - 20:05 Der er 11 kommentarer og
1 løsning

Warning: Supplied argument

Hej.

Endnu en fejl medd.:

Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\ov_dig\test3.php on line 8
Sorry, no records were found!

PÅ baggrund af følgende script:


SCRIPT:
<html>
<body>
<?php

$db = mysql_connect("localhost", "root");
mysql_select_db("PHP MySQL Tutorial 1",$db);
$result = mysql_query("SELECT * FROM tom database",$db);
if ($myrow = mysql_fetch_array($result)) {
  echo "<table border=1>\n";
  echo "<tr><td>Navn</td><td>Alder</td><td>Position</td></tr>\n";
  do {
    printf("<tr><td>%s %s</td><td>%s</td><td>%s</td></tr>\n", $myrow[1], $myrow[2], $myrow[3], $myrow[4]);
  } while ($myrow = mysql_fetch_array($result));
    echo "</table>\n";
} else {
    echo "Sorry, no records were found!";   
}

?>
</body>
</html>
Avatar billede danino Nybegynder
26. marts 2004 - 20:09 #1
Du mangler dit password i mysql_connect...
Avatar billede fangel Nybegynder
26. marts 2004 - 20:23 #2
og lad være med at have databaser og tabeller med mellemrum i deres navne
Avatar billede Claus Mester
26. marts 2004 - 20:59 #3
Jeg har ikke skulle bruge password før. Så det er ikke problemet.
Det er rigtigt, at mellemrummene kan give lidt problemer senere hen, men det er nok heller ikke det der er problemet nu.

Begge tilfælde virker på et simplere script. Se evt. http://www.eksperten.dk/spm/482394
Avatar billede olebole Juniormester
26. marts 2004 - 23:37 #4
<ole>

Jamen, så prøver jeg da også: Du bør ikke have mellemrum i dine tabel-navne. Vælger du at insistere, bør du i det mindste skrive din SQL ordentligt:
  $result = mysql_query("SELECT * FROM `tom database`",$db);

/mvh
</bole>
Avatar billede olebole Juniormester
26. marts 2004 - 23:49 #5
Prøv i øvrigt at rette denne linie:
  $result = mysql_query("SELECT * FROM tom database",$db);
til:
  $sql = "SELECT * FROM tom database";
  $result = mysql_query( $sql ) or die ( mysql_error() );

Så kan du se, hvad det er, du gør galt  ;o)
Avatar billede Claus Mester
26. marts 2004 - 23:57 #6
Tak. Jeg skal ha' det i mende når jeg opretter tabeller :-)

Ved at følge dit forslag, olebole, med "..error..", får jeg følgende forklaring:

"You have an error in your SQL syntax near 'database' at line 1"

Men jeg kan ikke umiddelbart hitte ud af, hvad der er galt hvor.?
Avatar billede olebole Juniormester
27. marts 2004 - 00:02 #7
Har du ikke fået det at vide hele _to_ gange? At du er for 'klog' til at tro os, er så en helt anden ting  :)
Prøv denne her, Bassemand:

  $sql = "SELECT * FROM `tom database`";
  $result = mysql_query( $sql ) or die ( mysql_error() );

Hvad sker der så - og hvorfor mon?  :)
Avatar billede tefcke Nybegynder
27. marts 2004 - 12:17 #8
Lyt til olebole. Når du bruger mellemrum i navnet på din database, er du tvunget til at "backticke": `tom database`

Hvis du ikke gør det tror sql at "tom" er tabel navnet, og at database er et eller andet som du vil have den til.
Avatar billede olebole Juniormester
27. marts 2004 - 13:08 #9
Det samme kommer mange ud for, når de forsøger at have et felt med navne som 'adresse', 'postnr' og 'by'. Her vil MySQL opfatte ordet 'by' som værende en angivelse af det felt, der skal sorteres efter - men brækker sig, da det står et helt forkert sted i SQL'en.
Her kan man dog også komme udenom problemer ved at escape'e ordet med en accent grave på hver side ('backticke') ... eks:
  $sql = "SELECT `adresse`, `postnr`, `by` FROM `tabelnavn` WHERE `id`='".$id."'";

Som du ser escape'er jeg alle navne i SQL'en. Det er i dette eksempel kun nødvendigt med 'by' - men det er god kodeskik at gøre det konsekvent ... så glemmer man det ikke, når det endelig er nødvendigt. Fuldstændig ligesom med gåseøjne om attributterne i HTML.
Jeg har ikke altid selv gjort det - men har lært af skade. Nu er det nærmest blevet en behandlingskrævende 'tvangshandling'  :)
Avatar billede Claus Mester
28. marts 2004 - 20:37 #10
olebole: Ja! Jeg må jo give dig ret, at `` gør tricket :-) Tak for hjælpen. Giv lige et svar så du kan få dine velfortjente point!
Avatar billede olebole Juniormester
28. marts 2004 - 23:47 #11
Gerne  :)
Avatar billede Claus Mester
29. marts 2004 - 08:33 #12
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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