Mysql_Query Fehler
mySQL
- datenbank
Hallo, ich bin gerade dabei eine Datenbankabfrage für ein Gästebuch zu schreiben. Nun möchte ich nur bestimmte Einträge mit LIMIT abrufen. Das ganze soll noch nach der 'time' sortiert werden.
Bei diesem Query ($id=1
):
$dbentrys =
mysql_query("SELECT * FROM guestbook WHERE visible=1 ORDER BY id DESC LIMIT [code lang=php]".$_GET['id']*3-3 ."
, ".$_GET['id']*3 ."
");[/code]
Bekomme ich aber nur den folgenden Fehler zurück, wenn ich irgendeine Operation mit $dbentrys
ausführen will. Was ist bei dem Query falsch? Oder liegts an etwas anderem?
MfG
-> Es wird nach der id sortiert...
Sorry aber heute is nich mein Tag, der Fehler:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
Hello,
mysql_query("SELECT * FROM guestbook WHERE visible=1 ORDER BY id DESC LIMIT
".$_GET['id']*3-3 ."
,".$_GET['id']*3 ."
");[/code]
es ist annähernd lebensgefährlich einen ungeprüften GET/POST-Wert in ein SQL-Statement zu übernehmen, hast du den Inhalt vorher überprüft?
Um den Fehler zu analysieren reiche bitte mehr Informationen als "$id=1" - wie sieht das endgültige Statement aus, das gegen die Datenbank läuft.
Die Fehlermeldung legt zudem nahe, dass du keinerlei Fehlerbehandlung vorgenommen hast, siehe z.B. mysql_error().
MfG
Rouven
$dbentrys = [code lang=sql]mysql_query("SELECT * FROM guestbook WHERE visible=1 ORDER BY id DESC LIMIT 1, 3");
[/code]
Der Entqültige Query sollte so aussehen. Und ich überprüfe vorher ob der Wert Numeric ist, was bei meinen Zwecken reicht ;).
thx
Hi!
[...] LIMIT ".$_GET['id']*3-3 .", ".$_GET['id']*3 [...]
es ist annähernd lebensgefährlich einen ungeprüften GET/POST-Wert in ein SQL-Statement zu übernehmen, [...]
Schon, aber durch die Multiplikation/Subtraktion ergibt sich auf alle Fälle ein Zahlenwert.
Lo!
Hello,
Schon, aber durch die Multiplikation/Subtraktion ergibt sich auf alle Fälle ein Zahlenwert.
ist PHP SO großzügig auch wenn der Wert nicht übertragen wurde?
MfG
Rouven
Hi!
Schon, aber durch die Multiplikation/Subtraktion ergibt sich auf alle Fälle ein Zahlenwert.
ist PHP SO großzügig auch wenn der Wert nicht übertragen wurde?
Bei einem $GET-Wert handelt es sich auf alle Fälle um einen String. Wenn ein String in einen nummerischen Kontext gebracht wird, dann wird daraus entweder der Zahlenwert soweit er vom Beginn des Strings ermittelt werden kann (42foo ergibt 42) oder 0. Wenn der Wert nicht vorhanden ist, ergibt das null und eine Konvertierung von null nach integer ist zwar nicht definiert, ergibt jedoch ebenfalls 0.
Lo!
Hi!
Bei diesem Query ($id=1):
$dbentrys = mysql_query("SELECT * FROM guestbook WHERE visible=1 ORDER BY id DESC LIMIT ".$_GET['id']*3-3 .", ".$_GET['id']*3 ."");
Was hat das $id mit der Abfrage zu tun? Und bist du dir bewusst, dass es die Parameter bei LIMIT nicht die Bedeutung von-bis sondern von-Anzahl haben? Was macht außerdem der angehängte Leerstring?
Das ganze soll noch nach der 'time' sortiert werden.
[...] ORDER BY id DESC [...]
Es wird nach der id sortiert...
Ja, wundert dich das?
Bekomme ich aber nur den folgenden Fehler zurück, wenn ich irgendeine Operation mit $dbentrys ausführen will.
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in
In welchen Fällen bekommst du von mysql_query() ein boolsches Ergebnis? Was sagt die Beschreibung im PHP-Handbuch dazu?
Was ist bei dem Query falsch? Oder liegts an etwas anderem?
Was es ist, sagt dir bei einem mysql_*()-Fehler immer das Ergebnis von mysql_error().
Lo!