mySQL fehler
Ronny
- datenbank
was bedeutet diese fehlermeldung ? wie soll ich drauf reagieren? hatte ( zum glück) bisher keine fehler in meinen zusammengebastelten scripten(PHP) ;)
danke für antwort..
ronny
Warning: Supplied argument is not a valid MySQL-Link resource in
Warning: Supplied argument is not a valid MySQL-Link resource in [...]
Vermutlich ist die syntax Deiner query fehlerhaft.
Zum Debugging versuche folgendes:
$result=mysql_query(...) or die(mysql_errno().': '.mysql_error());
Warning: Supplied argument is not a valid MySQL-Link resource in [...]
Vermutlich ist die syntax Deiner query fehlerhaft.
Zum Debugging versuche folgendes:
$result=mysql_query(...) or die(mysql_errno().': '.mysql_error());
Hallo,
ja, so wie Bernhard das vorschlägt, bekommst Du die Ursache heraus.
Die Fehlermeldung kommt immer dann, wenn man mit einem ungültigen SQL-Statement oder ohne die passenden Zugriffsrechte versucht hat, ein Resultset zu erzeugen. Es wird aber kein Handle auf ein Resultset geliefert, weil keines erzeugt werden konnte. Wenn man jetzt mit dem leeren Handle (es ist auf NULL gesetzt) versucht, die Abfrageergebnisse zu verarbeiten, wird diese Fehlermeldung ausgelöst. Daran sieht man, dass der Fehler erst viel später bemerkt wird, als er entstanden ist. Standardmäßig solltest Du daher immer die Verarbeitung in ein if einpacken:
if $result=mysql_query(...) // klappt die Abfrage?
{
Verarbeitung_durchführen; // ein Glück, hat geklappt
}
else
{
Fehlermeldungen; // Mist, schon wieder was falsch
}
Grüße
Tom
Wenn man jetzt mit dem leeren Handle (es ist auf NULL gesetzt) versucht, [...]
mysql_query() gibt bei einer fehlerhaften query bool(false) zurück!?
Wenn man jetzt mit dem leeren Handle (es ist auf NULL gesetzt) versucht, [...]
mysql_query() gibt bei einer fehlerhaften query bool(false) zurück!?
Hallo,
bei mir hat das bisher immer so geklappt. Ich denek, es gibt NULL zurück und das ist boolesch verglichen eben false.
PHP wandelt ja so schön die Typen inenander um, dass das funktioniert.
Sieh Dir dazu mal Seite 404 http://www.bitworks.de/literatur/php/php4.zip an. Da steht das alles. Dann brauche ich es nicht abzuschreiben.
Wenn nicht NULL zurückgegeben wird, dann heißt das aber noch lange nicht, das das Resultset einen Eintrag hat. Es kann dann auch leer sein. Das muss man dann bei der Weiterverarbeitung auch noch berücksichtigen:
Die Anzahl der SQL-Treffer erfährst Du dann mit mysql_num_rows($result)
Gruß
Tom
Ich denk, es gibt NULL zurück und das ist boolesch verglichen eben false.
Ui, da muß ich ein bißchen PHP advocacy betreiben:
NULL ist NULL und etwas besonderes. Nur das (case insensitive) keyword NULL ist vom typ NULL, nichts anderes. In PHP gilt zwar NULL==false, aber sicher niemals NULL===false. Zu mehr derartigen Hirnwich^H^H^H^Hverrenkungen siehe http://www.php.net/manual/en/language.types.null.php
$result=mysql_query('hallo'); var_dump($result); ergibt jedenfalls bool(false). Auch die Dokumentation läßt daran keinen Zweifel:
"mysql_query() returns a resource identifier [Anm.: oder TRUE, je nach statement] or FALSE if the query was not executed correctly."
http://de.php.net/manual/en/function.mysql-query.php
Ich möchte mir ehrlich gesagt kein (4,6MB großes) file downloaden, um danach eventuell lesen zu müssen, daß mysql_query() im Fehlerfall NULL zurückgibt...!?
Wenn nicht NULL zurückgegeben wird, dann heißt das aber noch lange
nicht, das das Resultset einen Eintrag hat.
Hab ich nie behauptet. Auch ein empty set ist ein result set, ist aber dann in jedem Fall vom typ resource.