php Abfrage mit mysqli
Paule
- mysql
- php
0 dedlfix0 Paule0 Matthias Apsel0 Paule0 Matthias Apsel0 Rolf B
Hallo,
ich bin dabei uralte skripte auf meinem internen Server (also nicht öffentlich im Netz) von mysql_ auf mysqli_ umzustellen.
Die Datenbankverbindung steht.
Schon bei einer simplen Abfrage haut das nicht hin.
$SQL = "SELECT * FROM lieferschein WHERE (FUSSTEXT != 'ok' AND LIEFART ='2') OR (FUSSTEXT != 'ok' AND LIEFART = '3')";
$res = mysqli_query($ConnectHnd,$SQL);
while($ls = mysqli_fetch_assoc($res)){
}
Treffer 0! Keine Fehlermeldung!
Lasse ich die SQL via Heidi auf die Datenbank los = 25 Treffer!
Blick ichs nicht? Übersehe ich mal wieder ein Komma, Hochkomma etc?
Frust macht sich breit.
Tach!
Treffer 0! Keine Fehlermeldung!
Genauer gesagt: keine PHP-Fehlermeldung. In deinem Code ist keine Auswertung der Rückgabewerte der verwendeten Funktion auf Fehlerzustand und auch keine Abfrage möglicher Meldungen.
Die MySQL-API erzeugt keine PHP-Fehlermeldungen. Stattdessen signalisiert sie Fehler über ein false
als Funktionsergebnis. Das muss man auswerten, wenn man nicht nur Schönwetterprogramme schreibt.
dedlfix.
Keine Fehlermeldung - auch nicht mit mysqli_error()?
Hallo Paule,
Keine Fehlermeldung - auch nicht mit mysqli_error()?
echo "<pre>";
var_dump($res);
Bis demnächst
Matthias
OK, Danke! Das ist das Ergebniss:
object(mysqli_result)#2 (5) {
["current_field"]=>
int(0)
["field_count"]=>
int(111)
["lengths"]=>
NULL
["num_rows"]=>
int(25)
["type"]=>
int(0)
}
Edit Rolf B: ~~~ hinzugefügt
Das bedeutet doch, dasses 25 Treffer gibt. Der Fehler liegt dann ja wohl in der Schleife bzw. das $ls = mysqli_fetch_assoc($res) haut nicht hin.
Hallo Paule,
dann auf diese Weise weiterforschen.
Bis demnächst
Matthias
Hallo Paule,
Der Fehler liegt dann ja wohl in der Schleife bzw. das $ls = mysqli_fetch_assoc($res) haut nicht hin.
Der var_dump von $res ergab field_count = 111. Das sind eine Menge Spalten.
Die Frage ist also, was Du innerhalb dieser while-Schleife tust. Du könntest zu Anfang des while-Blocks einen echo einbauen, der Dir ein identifizierende Spalte von $ls ausgibt.
Die Frage ist auch, wie bei Dir error_reporting eingestellt ist. Gibt es einen PHP Fehler und Du siehst ihn einfach nur nicht, weil PHP ihn unterdrückt? Beim Debuggen setzt man zumeist error_reporting(E_ALL). In Produktions natürlich nicht.
Rolf