Dirk: MySQL Fehler - wo?

Hallo zusammen,

ich erzeuge mit PHP folgende Zeile, um eine Zeile aus meiner Tabelle upzudaten:

UPDATE 041212219Kaihalle SET naechstes = '0' WHERE nummer < 26 LIMIT 1
alternativ:
UPDATE 041212219Kaihalle SET naechstes = '0' WHERE nummer < '26' LIMIT 1

Fazit. sollte eigentlich in die nächste Zeile mit kleinerer Zeilennummer den Updatebefehl ausführen. Pustekuchen. Fehlermeldung gibts auch keine, auch wenn ich den Befehl mit PHPmyAdmin absetze, ganz im Gegenteil: da kommt affected rows = 1. Die Angabe wurde aber nicht geändert.

Führe ich den Befehl mit PHPMyAdmin grafisch aus, funzt er. Er wird da folgendermaßen aufgerufen:
UPDATE 041212219Kaihalle SET naechstes = '0' WHERE nummer = '24' LIMIT 1 ;

(25 gibts nicht mehr, also ist 24 das nächste, < 26 wird dynamisch per php erzeugt.)

Wer kann mir helfen? Ich bin echt am Verzweifeln, das MySQL macht ja, was es will...

Gruß, Dirk

  1. das ist zumeist der springende punkt!

    naechstes

  2. Hallo Dirk,

    ich erzeuge mit PHP folgende Zeile, um eine Zeile aus meiner Tabelle upzudaten:

    UPDATE 041212219Kaihalle SET naechstes = '0' WHERE nummer < 26 LIMIT 1
    alternativ:
    UPDATE 041212219Kaihalle SET naechstes = '0' WHERE nummer < '26' LIMIT 1

    nummer ist wohl vom Typ int (oder größer), also solltest Du die Hochkomma weglassen können.

    Beabsichtigter Effekt:

    Fazit. sollte eigentlich in die nächste Zeile mit kleinerer Zeilennummer den Updatebefehl ausführen. Pustekuchen. Fehlermeldung gibts auch keine, auch wenn ich den Befehl mit PHPmyAdmin absetze, ganz im Gegenteil: da kommt affected rows = 1. Die Angabe wurde aber nicht geändert.

    Der erste Datensatz, der die WHERE-Klausel erfüllt, wird upgedatet - und das jedes mal aufs neue.

    Führe ich den Befehl mit PHPMyAdmin grafisch aus, funzt er. Er wird da folgendermaßen aufgerufen:
    UPDATE 041212219Kaihalle SET naechstes = '0' WHERE nummer = '24' LIMIT 1 ;

    Das ist etwas ganz ganz anderes ...
    Das ist nicht die gleiche Anweisung.
    Kein Wunder, dass etwas anderes resultiert.

    (25 gibts nicht mehr, also ist 24 das nächste, < 26 wird dynamisch per php erzeugt.)

    Wer kann mir helfen? Ich bin echt am Verzweifeln, das MySQL macht ja, was es will...

    Nein, MySQL macht, was Du ihm sagst:

    Aktualisiere den ersten Datensatz in der Tabelle '041212219Kaihalle', der die Bedingung erfüllt, dass nummer kleiner ist als 26.

    Willst Du den Datensatz aktualisieren, bei dem nummer < als 26 ist und von allen Datensätzen den mit der größten Nummer, die diese Bedingung erfüllt, dann musst Du eine entsprechende Sortierung vorgeben.

    Sortiert wird mit ORDER BY,
    aufsteigend mit ASC
    absteigend mit DESC

    Damit solltest Du das Statement hinkriegen :-)

    Freundliche Grüsse,

    Vinzenz

    1. Hallo,

      ähm ja, danke, du hast recht, oben hats was verändert, da hab ich aber nie hingeschaut... Und ich hab mich immer gefragt, warum in der Syntaxbeschreibung von update ein SORT angegeben ist... Naja, jetzt funzt es jedenfalls.

      Gruß, Dirk

      PS: die Mail von testa versteh ich nicht...