Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

  • Hallo,
    ich wollte mit einem Script + Cronjob testen, ob 24 Stunden seit
    IP Eintragung bereits rum sind, ist dies der Fall soll die IP aus der DB gelöscht werden.

    Nun habe ich den timestamp für meine IP um 86400 Sek (= 1 Tag) zurückgesetzt um das Script testen zu können.

    Dies funktionierte auch, jedoch kommt trotzdem die Fehlermeldung:

    Zitat

    Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

    Ich habe nun schon versucht mit mysql_error() mehr rauszubekommen, dies schlug aber fehl und es kommt kein weiterer Hinweis.

    Wenn der Eintrag dann gelöscht ist, kommt die Fehlermeldung nicht mehr. Ist mysql_fetch_arry() nicht dafür geeignet einzelne IPs zu löschen, wenn die anderen noch nicht ihre 24h abgesessen haben?


    --- Hier das Cronjobscript ---

    Ich hoffe damit kann mir wer helfen. Danke ! ;)

    Einmal editiert, zuletzt von Darkxor (24. Februar 2009 um 17:57)

  • Wo da der Fehler in deiner Abfrage sein soll seh ich grad auch nicht, es sei denn du baust vorher gar keine Verbindung zur DB auf oder die Tabelle "nutzer" existiert nicht.
    Ansonsten, meinst du nicht es wäre so wesentlich kürzer und einfacher (ungetestet):

    PHP
    $one_day_ago = time()-86400;
    $sql = "
    DELETE FROM
        nutzer
    WHERE
        zeit<".$one_day_ago;
    mysql_query($sql);

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Achja, was mir grad noch einfällt:

    PHP
    echo mysql_error();

    Das macht in der Schleife absolut keinen Sinn, setz das davor. Wenn du nämlich einen Mysql-Error hast wirst du auch kein brauchbares Ergebnis haben das von mysql_fetch_array() abgeholt werden kann, also springt dein Script gar nicht erst in die Schleife.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

    Einmal editiert, zuletzt von SinnlosS (24. Februar 2009 um 22:38)

  • Hallo,
    mysql_error(); hatte ich auch an mehren Stellen zu Probezwecken
    eingebaut, aber brachte alles keine genaueren Fehlermeldungen.

    Ich habe nun die MySQL Anweisungen in der Schleife einfach andere
    Namen vergeben und bisher habe ich keine Fehlermeldung mehr auch
    nach einigen Testen, jedoch kann ich jetzt nicht wirklich
    ausschließen, dass dies grad nur Zufall ist oder so.

    Wenn nochwas sein sollte melde ich mich dann nomma.

    Hier der momentane Code:

  • Deine Schleife ist absolut nicht nötig und verjubelt unnötig Resourcen. Sieh' dir das Beispiel von "SinnlosS" nochmal an, das ist deutlich besser als deine Schleife.