PHP MySQL Fehler
Michael
- php
/* Fehler */
Warning: Supplied argument is not a valid MySQL result resource in /xxx.php on line 162
/* CODE */
$abfrage = "SELECT * FROM klausurtermine";
$ergebnis = mysql_query($abfrage) or die("Fehler in klausurtermine beim Lesen");
while ($row = mysql_fetch_array($ergebnis)) /*ZEILE 162*/
{
$klausurtermineid =$row["id"];
$klausurtermineklausurliste =$row["klausurlistename"];
if ($klausurlistenameextra==$klausurtermineklausurliste)
{
$loeschen = "DELETE FROM klausurtermine
WHERE id=$klausurtermineid";
$ergebnis = mysql_query($loeschen) or die ("Fehler in
klausurtermine beim Schreiben"); }
}
Hallo könnt Ihr mir sagen was für ein Fehler in Zeile 162 ist ?
Ich habe es immer so gemacht und in dieser Datei meckert er. Das witzige ist nur das er den code trotzdem ausführt.
Hello,
leider hast Du uns die Zeilennummern unterschlagen, was das einfache Antworten erschwert.
Jedenfalls tritt dieser Fehler auf, wenn das Query aus irgend einem Grund schief gegangen ist. Man sollte also imner nach dem Query fragen:
if (!$ergebnis)
{
echo "Query schiefgegangen: ".mysql_error()."<br />\n";
}
else
{
# Verarbeitung
}
Tom
Hallo Michael,
while ($row = mysql_fetch_array($ergebnis)) /*ZEILE 162*/
{
$klausurtermineid =$row["id"];
^^ wo kommt id(Supplied argument) her und muss da nicht ein $ davor
$klausurtermineklausurliste =$row["klausurlistename"];
if ($klausurlistenameextra==$klausurtermineklausurliste)
{
$loeschen = "DELETE FROM klausurtermine
WHERE id=$klausurtermineid";
$ergebnis = mysql_query($loeschen) or die ("Fehler in
klausurtermine beim Schreiben"); }
}
ansonsten seh ich keine andere Fehlerursache
Tschüß Neli
Hello Neli,
while ($row = mysql_fetch_array($ergebnis)) /*ZEILE 162*/
{
$klausurtermineid =$row["id"];
^^ wo kommt id(Supplied argument) her und muss da nicht ein $ davoransonsten seh ich keine andere Fehlerursache
Es geht um einen MySQL-Fehler. In der Zeile, die Du referenzierst, findet aber nur eine ganz normale Array-Operation statt, keine MySQL-Operation. Die ["id"] ist hier ein Displacement oder Index des assoziativen Arrays. Es wird also vermutlich auch kein $-Zeichen davor gehören, allerdings könnte man zur Entlastung des Parsers besser ['id'] mit einfachen Häkchen schreiben.
Die Fehlerursache kannst Du in dem kurzen Script leider auch nicht shen, da die Fehlerhafte Zeile nicht angezeigt wird. Auch das kann man natürlich verbessern:
$sql = "Select ID, NAME from USER where ..."
echo htmlentities($sql)."<br />\n";
$ergebnis = mysql_query($sql, $con);
Durch das Anzeigen des Querys vor der Ausführung springen einen manche Fehler regelrecht an. ;-)
Liebe Grüße aus http://www.braunschweig.de
Tom
Hello Tom,
while ($row = mysql_fetch_array($ergebnis)) /*ZEILE 162*/
^^ ist das die zeile ;-) ?
Die Fehlerursache kannst Du in dem kurzen Script leider auch nicht shen, da die Fehlerhafte Zeile nicht angezeigt wird.
Durch das Anzeigen des Querys vor der Ausführung springen einen manche Fehler regelrecht an. ;-)
Mann/Frau sollte beim Programmieren viel öfter die Variablen mittels echo oder print ausgeben lassen. Wenn die Ausgabe nicht gebraucht wird, kann man sie mittels Kommentarzeichen davor im Quellcode verstecken. Bei später auftretenden Fehlern kann man sie dann einfach wieder aktivieren. Mir hat das jedenfalls schon oft aus der Patsche geholfen.
LG Neli
Hello,
while ($row = mysql_fetch_array($ergebnis)) /*ZEILE 162*/
^^ ist das die zeile ;-) ?
Genau. Und auf den Fehler habe ich in der anderen Antwort schon Bezug genommen.
Wenn jemand hier tonnenweise Code postet, dann sollte er sich auch die Mühe machen, die Zeilennummern davor zu schreiben. Hier war ja die vom Parser bemeckerte Zeile gekenntzeichnet worden. Wie wir aber wissen, liegt der eigentlich Fehler oft ein oder zwei Zeilen darüber. Es ist also klug, den Code etwas geschickter auszuwählen, den man/fru postet.
Auch in diesem Fall lag der Fehler ja eigentlich im Query und nicht in dessen Auswertung.
Deine Anregung, für die Entwicklung verschiedene Fehlermeldungen und Kontrollmeldungen auszugeben, die im späteren Betrieb ausgeschaltet werden, kann ich nur begrüßen. Man kann das auch mit einer Bedingung verknüpfen:
if(DEBUG) echo "diesunddas";
Und "DEBUG" dediniert man am Anfang des Scriptes oder zentral in einer Konstantendatei
define ("DEBUG",true);
dannn muss man später nur diese eine Zeile ändern, und die Skripte sind still.
Liebe Grüße aus http://www.braunschweig.de
Tom