Gå til innhold

mysql_num_rows(): supplied argument is not a valid


Anbefalte innlegg

Skrevet

Hei og hopp!

 

Hater PHP! Av og til...

 

får "mysql_num_rows(): supplied argument is not a valid MySQL result resource" når jeg kjører denne koden:

 

$result = mysql_query("SELECT id,name,link,contentid FROM jos_ibruk_documentation WHERE contentid='$id'");

// find out how many rows there are
$num = mysql_num_rows($result);

 

Hvorfor får jeg det?

 

Får et fornuftig resultat når jeg kjører spørringen også. Hvorfor får jeg ikke telt opp rader i spørringen?

 

 

AAARG!

Videoannonse
Annonse
Skrevet

PHP er et fint språk det. Feilmeldingen forteller det alltid hva som er feilen.

Bruk ALLTID "or die( mysql_error() )" etter spørringen. Hvertfall når du driver med utviklingen av scriptet.

 

Jeg får også ut ifra at `contentid` er en integer (tall), og du trenger derfor ikke fnutter rundt verdien.

Skrevet
Mest sannsynlig er det et felt som ikke eksisterer.

9425408[/snapback]

 

id er en integer autoincrement

name er navn på linken

link er adressen til linken

contentid er fremmednøkkelen.

 

Kan noen gi meg et lite tips på en bitteliten kodesnutt jeg kan prøve for å se om det fungerer med det?

 

 

Bhead

Gjest Slettet+142
Skrevet

Har du gjort som M4rtin ba deg om?

 

$result = mysql_query("SELECT id,name,link,contentid FROM jos_ibruk_documentation WHERE contentid='$id'");

if(!$result) echo '<br>'.mysql_error().'<br>';

// find out how many rows there are
$num = mysql_num_rows($result);

Skrevet
Bruk ALLTID "or die( mysql_error() )" etter spørringen. Hvertfall når du driver med utviklingen av scriptet.

9424207[/snapback]

Kan noen gi meg et lite tips på en bitteliten kodesnutt jeg kan prøve for å se om det fungerer med det?

9425996[/snapback]

Gjør det, og du vil få en fin feilmelding.

Skrevet

Du bør ha det etter hver eneste spørring ( mysql_query() ) når scriptet er i utviklingsfasen. Når du er ferdig endrer du det til å vise en mindre detaljert feilmelding.

Gjerne "or die( "Feil på linje nr.: . " __LINE__ . "<br />" . mysql_error() );"

Skrevet

Vrøvl.

Bare sjekk returverdien fra mysql_query === FALSE. "or die()" er hat av dimensjoner. Det er noe som heter "graceful degrading" som vil si at programmet gjør så mye som mulig selv om det har oppstått en feilmelding.

 

Se for deg et bibliotek som plutselig bare avbryter scriptet ditt, selv om om du klarer deg fint uten databasen, f.eks. ved å servere en cachet versjon av dataene istedenfor. Men neeeeida, biblioteket skal plutselig bestemme når DU vil avslutte scriptet.

 

nei takk, die() er stort sett bare tull å bruke. Lær dere å sjekke returverdier fra funksjonene og utfør oppgaver deretter.

Skrevet
Vrøvl.

Bare sjekk returverdien fra mysql_query === FALSE. "or die()" er hat av dimensjoner. Det er noe som heter "graceful degrading" som vil si at programmet gjør så mye som mulig selv om det har oppstått en feilmelding.

 

Se for deg et bibliotek som plutselig bare avbryter scriptet ditt, selv om om du klarer deg fint uten databasen, f.eks. ved å servere en cachet versjon av dataene istedenfor. Men neeeeida, biblioteket skal plutselig bestemme når DU vil avslutte scriptet.

 

nei takk, die() er stort sett bare tull å bruke. Lær dere å sjekke returverdier fra funksjonene og utfør oppgaver deretter.

9450477[/snapback]

 

Kan du gi noen gode eksempler på sjekk av returverdier? Er alltid ute etter å lære :)

Gjest Slettet+142
Skrevet

$query = mysql_query("SELECT bla bla bla");
if($query===FALSE) echo "Dette gikk ikke bra..";
else{
 if(mysql_num_rows($query) < 1) echo "Mysql returnerte ingen rader.";
 else{
     while($r = mysql_fetch_assoc($query)){
     //behandle data
   }/while
 }//if(mysql_num_rows >= 1)
}//if($query!==FALSE)

 

Rotete, men tror den skal funke som eksempel :ermm:

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...