Wahrscheinlich Syntaxfehler, den ich nicht finde...

  • Hi Leute,

    ich bastel grad ein Skript, das einfach nicht funktionieren will. Irgendwo muss bei der SELECT Abfrage ein Fehler sein. Denn das Ergebnis ist immer 1, und sollte eigentlich eine Resource ID sein.
    Leider find ich den Fehler nicht und konnte mir auch über google nicht weiterhelfen...

    Könnt ihr mich aufklären?

    Schonmal tausend Dank im voraus, auch wenns nicht klappen sollte...

  • echo $result; ja ne ist klar ... das mti dme immer eins, giebt als boolen aus 1 query war IO 0 konnten icht ausgeführt werdem

    wenn dann must du: echo mysql_num_rows($result);


    echo $sql."
    \n
    ersetzen in:

    $tmp=mysql_error();
    if (!empty($tmp))
    echo $tmp."
    \n".$sql."
    \n";

  • Zitat von GreenRover

    das mti dme immer eins, giebt als boolen aus 1 query war IO 0 konnten icht ausgeführt werdem

    Sorry, aber den Satz versteh ich nicht. Ist irgendwie schwer zu lesen.

    Zu dem "echo $result;" und "echo $sql;":
    das steht nur temporär drin. Das bleibt natürlich nicht im Code.
    Ich dachte das bei "echo $result;" etwas wie "Resource id #1" rauskommen müsste.

    Ich depp hab mich wahrscheinlich ein bisschen unklar ausgedrückt. Denn wenn ich das Skript laufen lasse, kommt folgender Fehler:

    Zitat

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\vliste\gen.php on line 22


    In der 22ten Zeile wird die mysql_fetch_assoc() Funktion aufgerufen. Da er keine richtige Resource ID bekommt, meckert er. Das heißt das die Datenbankabfrage drüber irgendwie schief geht...

    Danke für die Antwort, aber der Fehler ist leider dadurch nicht behoben.

  • @ pindakaas:
    Das hab ich doch drin: "$result = mysql_query($sql) || die("Fehler beim Lesen aus der Datenbank. Grund:".mysql_error());"
    Ich nutze lieber || als OR, da ich es aus c++ so gewohnt bin.

    @ rover:
    Ich versteh den Unterschied zwischen meinem "|| die(...)" und deinem nicht. Du speicherst doch nur die eventuelle Fehlermeldung zwischen.
    Also ich habs natürlich trotzdem ausprobiert, aber er gibt mir keine Fehlermeldung aus. Er durchläuft also mysql_error() ohne Probleme, und bricht dann bei mysql_fetch_assoc() ab.

    => die query läuft anscheinend ohne Fehler, aber es wird keine Resource ID zurückgegeben... ich bin wirklich überfragt (weswegen ich hier auch gepostet habe)

  • Oh man, könnte mir das mal einer erklären:

    Ich hab langsam den Fehler eingekreist und rausgefunden das es an der Zeile liegen MUSS.

    Code
    $result = mysql_query($sql) || die("Fehler beim Auslesen der Datenbank. Grund:".mysql_error());


    Ok dachte ich mir, lass mal die Funktion die() weg. Und siehe da, es funktioniert einwandfrei !!!
    Also woran hats gelegen. Jetzt hab ich einfach mal ausprobier, das || durch OR zu ersetzen.

    Code
    $result = mysql_query($sql) OR die("Fehler beim Auslesen der Datenbank. Grund:".mysql_error());

    Man sieht es ist genau die selbe Zeile wie oben, nur ein OR statt ||. Und jetzt gehts...

    Aber warum? Ich wüsste gerne warum hier ein OR funktioniert und das || nicht. Bin das nämlich durch c++ gewohnt zu nutzen. Also wenn mich jemand aufklären kann, wäre ich sehr dankbar.