(or SQL) Variable leer aber auch nicht
Gerhard
- php
0 wahsaga0 Gerhard0 Vinzenz Mai0 lulu
0 Tobias Kloth0 Gerhard0 Daniel0 Vinzenz Mai
Hallo!
Ich habe folgende DB-Abfrage:
/*...*/
/*1*/ $strStatement= "SELECT name,farbe,darstellung,schriftfarbe,vorname ";
/*2*/ $strStatement.="FROM tb_user ";
/*3*/ $strStatement.="WHERE id='".$strUserId."'";
/*4*/ $rsUser=mysql_db_query("intranet",$strStatement,$vDBC);
/*5*/ var_dump($rsUser); //
/*6*/ $vErg=mysql_fetch_row($rsUser);
/*...*/
Zwar liefert die Ausgabe in Zeile 5 dass etwas ausgelesen wurde:
resource(3) of type (mysql result)
Allerdigns müsste es ja eine resource(5) sein, da ich 5 Felder abfrage.
Des weiteren liefert das fetch-row in Zeile 6 false zurück.
Was stimmt nicht?
lg Gerhard
hi,
/*4*/ $rsUser=mysql_db_query("intranet",$strStatement,$vDBC);
mysql_db_query() ist veraltet und sollte nicht mehr benutzt werden. nutze mysql_query().
Zwar liefert die Ausgabe in Zeile 5 dass etwas ausgelesen wurde:
resource(3) of type (mysql result)
Allerdigns müsste es ja eine resource(5) sein, da ich 5 Felder abfrage.
nein.
das heißt lediglich, dass die zurückgelieferte ressource intern die nummer 3 hat. das ist für dich vollkommen uninteressant.
Des weiteren liefert das fetch-row in Zeile 6 false zurück.
Was stimmt nicht?
deine fehlerbehandlung. nutze mysql_error().
gruß,
wahsaga
deine fehlerbehandlung. nutze mysql_error().
Mache ich bereits. Es ist kein SQL-Error.
Weiß jemand weiter?
Hallo Gerhard
deine fehlerbehandlung. nutze mysql_error().
Mache ich bereits. Es ist kein SQL-Error.
Bist Du Dir sicher, dass Deine Abfrage eine nichtleere Ergebnismenge zurückliefert?
Prüfe die Anzahl der Datensätze mit mysql_num_rows.
Freundliche Grüße
Vinzenz
Huhu Gerhard
Mache ich bereits. Es ist kein SQL-Error.
Aber vielleicht eine leere Ergebinsmenge.
Guck Dir die Query an und prüfe ob es zu Deinem "where" überhaupt einen Datensatz gibt.
Oder hänge probehalber mal ein " OR 1" an.
Viele Grüße
lulu
Hallo Gerhard,
/*1*/ $strStatement= "SELECT name,farbe,darstellung,schriftfarbe,vorname ";
/*2*/ $strStatement.="FROM tb_user ";
/*3*/ $strStatement.="WHERE id='".$strUserId."'";
gibt es einen Datensatz bei der das Feld id den Wert aus $strUserId enthält? Was sagt mysql_num_rows()? hast du dir den Query mal ausgeben lassen ob da auch wirklich das drinsteht, was du erwartest?
Grüße aus Nürnberg
Tobias
Naja num_rows liefert mir jetzt 0, was mich verblüfft, denn in diesem Fall müsste ja der Rückgabewert von mysql_db_query() false sein oder?
In diesem Fall hab ich den Fehler ja schon etwas gezielter lokalisiert.
Danke lg Gerhard
Ahoi Gerhard,
Naja num_rows liefert mir jetzt 0, was mich verblüfft, denn in diesem Fall müsste ja der Rückgabewert von mysql_db_query() false sein oder?
nein, mysql_db_query() gibt nur false zurück wenn was schief lief, wenn
es keinen entsprechenden datensatz gibt wird nicht zwingend false
zurückgegeben. das dir num_rows 0 liefert ist wohl darauf zurückzuführen
das die WHERE-clause auf keinen datensatz zutrifft.
MfG
Hallo Gerhard,
Naja num_rows liefert mir jetzt 0, was mich verblüfft, denn in diesem Fall müsste ja der Rückgabewert von mysql_db_query() false sein oder?
ergänzend zu Daniels Ausführungen solltest Du Dir die Erläuterung zu mysql_query() durchlesen. Ich gehe davon aus, dass diese für mysql_db_query(), die ich noch nie verwendet habe und nie verwenden werde, genauso gilt.
Die Tatsache, dass ein DBMS eine Abfrage ausführen kann, sagt nun mal nicht über die Anzahl der zurückgelieferten Datensätze aus.
Freundliche Grüße
Vinzenz