Fehlerausgabe bei Mysql-Abfragen
Andy
- php
Hallo Forum,
ich komm' so überhaupt nicht weiter ...
Was ich möchte, ist,
mir eine Mail schicken lassen (oder echo "Fehlertext";)
wenn 1 Datensatz nicht gefunden wird,
aber ich krieg's nicht hin o(
Versuch 1:
$itemID=mysql_query("select * from $db WHERE ID = '$ID'") or die("Fehler $ID");
Klappt nur, wenn ein echter Fehler vorliegt, also die $db nicht gefunden wird.
_________
Versuch 2:
$itemID=mysql_query("select * from $db WHERE ID = '$ID'") or die();
if (!$itemID) {
echo "Fehler $ID";
errormail($ID);
}
Klappt überhaupt nicht,
weil als $itemID in jedem Fall eine "Resource id #27" vorhanden ist,
obwohl es den angeforderten Datensatz überhaupt nicht gibt.
Es gibt den Fall !$itemID also gar nicht!
_________
Was mache ich falsch oder Wie kriege ich's hin ?
*grübel*
Danke, Andy
Was mache ich falsch oder Wie kriege ich's hin ?
Du benutzt das Ergebnis der Funktion mysql_query nicht wie vorgesehen. Wenn du das so wie im Beispiel machst, wirst du mehr Erfolg haben.
Was mache ich falsch oder Wie kriege ich's hin ?
Du benutzt das Ergebnis der Funktion mysql_query nicht wie vorgesehen. Wenn du das so wie im Beispiel machst, wirst du mehr Erfolg haben.
Hi dedlfix,
angeguckt, verschiedene Sachen versucht, blick ich nicht ...
Der or-Fall tritt doch nur ein,
wenn DB oder Spalte nicht gefunden werden,
aber nicht, wenn es den Datensatz nicht gibt.
In diesem Fall kriegst Du auf jeden Fall (ich zumindest *grübel* o)
ein array zurück und hast somit auch keinen Fehlerfall mehr.
Ich geh jetzt über die Krücke if(mysql_num_rows($itemID) == 0),
obwohl mich das nicht wirklich befriedigt
und ich es auch einfach verstehen will ...
Aber Besten Dank, Andy
Hallo,
Ich geh jetzt über die Krücke if(mysql_num_rows($itemID) == 0),
obwohl mich das nicht wirklich befriedigt
Das ist aber die einfachste Lösung bei SELECT-Statements. Für UPDATE, INSERT bzw. DELETE dann entsprechend mysql_affected_rows.
Eine weitere mögliche Lösung wäre, das Resultset mit mysql_fetch... auszulesen und zu prüfen, ob gleich FALSE (keine Datensätze mehr) zurück kommt.
weil:
aber nicht, wenn es den Datensatz nicht gibt.
In diesem Fall kriegst Du auf jeden Fall
ein array zurück und hast somit auch keinen Fehlerfall mehr.
Ein SQL-Statement, welches keine Datensätze betrifft bzw. zurückgibt, ist _deswegen_ ja auch nicht fehlerhaft.
viele Grüße
Axel
Hi Axel,
Allerbesten Dank!
Das ist genau die richtige Antwort für Newbies wie mich
Gruss, Andy