Erst Select und dann Update?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Erst Select und dann Update?

    Hallo Leute ich hab folgendes Problem:
    Ich habe ne in ner DB ne Tabelle mit der Spalte datum. Diese hat das Format TEXT. Das möchte ich gern umkonvertieren zu DATE. Hab ich mir in der Tabelle nach Datum ne neue Spalte datum angelegt und diese mit DATE formatiert und die alte spalte in olddatum umbenannt.

    Nun noch ein kleines PHP zum konvertieren und nichts geht.

    PHP-Code:
    $cur mysql_query("SELECT * FROM counter",$conn);

    while(
    $row mysql_fetch_row($cur))
    {
        
    $datteile explode("/"$row[0]);
        
    $newdat "20".$datteile[2]."-".$datteile[1]."-".$datteile[0];
        echo 
    $newdat." "//Ausgabe des neu Formatierten Datums
        
    echo mysql_query("UPDATE counter SET datum = \"$newdat\"",$conn)or die("SQL falsch")."<br>";

    Warum hab ich nun in jeder Zeile das Datum der letzten Zeile drin stehen, obwohl bei der Ausgabe immer das der jeweiligen Zeile kommt?

  • #2
    Weil du das UPDATE bedingungslos ausführen lässt und dadurch immer alle Datensätze der Tabelle geändert werden?
    Oder was dachtest du, welche Datensätze mySQL aktualisiert und welche nicht und woher es das wissen soll?


    bwt:
    Code:
    UPDATE tabelle
    SET datum = CONCAT('20', RIGHT(olddatum, 2), '-', MID(olddatum, 4, 2), '-', LEFT(olddatum, 2))
    sollte auch gehen, kannst es dir ja mal sicherheitshalber vorher mit
    Code:
    SELECT
     datum,
     datum = CONCAT('20', RIGHT(olddatum, 2), '-', MID(olddatum, 4, 2), '-', LEFT(olddatum, 2))
    FROM tabelle
    anschauen
    Ich denke, also bin ich. - Einige sind trotzdem...

    Kommentar


    • #3
      Alles klar mein Fehler. Ich hab gedacht das immer nur der gerade mit fetch_row abgerufene betroffen ist. Aber ist ja klar jetzt. Ich muss ja dem Update auch Bedingungen wie dem Select geben.

      Also sollte auch "UPDATE counter SET datum = \"$newdat\"" WHERE olddatum = "$row[0]"; gehen wenn in $row[0] das alte Datum drin steht oder?

      Aber was du hier gemacht hast ist natürlich das beste. Wusste gar nicht das MySQL sowas geiles kann.

      Kommentar

      Lädt...
      X