Michael: PHP MySQL Fehler

/* 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.

  1. 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

    --
    [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
      Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
      Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
  2. 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

    1. Hello Neli,

      while ($row = mysql_fetch_array($ergebnis))   /*ZEILE 162*/
        {
           $klausurtermineid   =$row["id"];
                                         ^^ wo kommt id(Supplied argument) her und muss da nicht ein $ davor

      ansonsten 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

      --
      [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
        Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
        Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      1. 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

        1. 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

          --
          [ Computer-Camp für PHP-Anwender in den Sommerferien. Programmieren,
            Sport, Fun, Fete. Teilnehmermindestalter Gruppe 1: 14 Jahre
            Mindestalter Gruppe 2+3 18 Jahre, Info bei mir ]
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen