tomtomtom: Datum in Tabelle umkonvertieren

Hallo,

entweder ich habe Tomaten auf den Augen oder ich bin eines Irrtums aufgesessen.

Ich habe eine MySQL Tabelle mit rund 550 Einträgen, bei denen ich das Datum um 4 Jahre zurückdatieren möchte - und zwar nur das Jahr.

Also gehe ich hin und SELECTe alle Einträge der Tabelle und mit einer normalen while-schleife lasse ich mir jeweils einen record holen, extrahiere das Datum, zerlege es in 3 Bestandteile und subtrahiere dann vom Jahr (in diesem Fall $datum_array[0] den Wert 4 und schreibe es mit der entsprechenden ID zurück in die Tabelle. Aber es klappt nicht.

Alle Datumsangaben sind im US Format abgelegt in der Tabelle (also z.b. 2004-10-22). Ich habe keine PHP Fehler und auch keine MySQL Errors bis ich die finale Zeile $result = mysql_query($sqlneu); "scharf" stelle.

Dann bekomme ich durch die Bank sowas: "Fehler im mySQL?: 1064: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''hp_news' SET datum='1999-06-16' WHERE id='112'' at line 1"

Im Prinzip ist das ja einfach:

$sql = mysql_query("SELECT * FROM news");
 while($sqlrow = mysql_fetch_array($sql)) {
  $datum=$sqlrow["datum"];
  $datum_array=split("-",$sqlrow["datum"]);
  $datum_array[0]=$datum_array[0]-4;
     $newdate=$datum_array[0]."-".$datum_array[1]."-".$datum_array[2];
  $id=$sqlrow["id"];
  $sqlneu="UPDATE 'hp_news' SET datum='$newdate' WHERE id='$id'";
  echo $sqlneu."<br>";
  $result = mysql_query($sqlneu);
  echo $id." ".$datum." > ".$newdate."<br>";
 }

Sieht jemand von euch den Fehler? Ich hab echt alles ausprobiert.

Danke
Gruss tomtomtom

  1. natürlich sind die namen hp_news und news in wahrheit identisch. das habe ich eben nur für den eintrag angepaßt.

    1. Hi,

      $sql = mysql_query("SELECT * FROM news");

      [...]

      $sqlneu="UPDATE 'hp_news' SET datum='$newdate' WHERE id='$id'";

      natürlich sind die namen hp_news und news in wahrheit identisch. das habe ich eben nur für den eintrag angepaßt.

      Fallen dir denn an "news" und "'hp_news'" sonst keine Unterschiede auf?

      Schreib am besten in der ersten o.a. Anweisung

      $sql = mysql_query("SELECT * FROM 'news'");

      dann bekommst du da schon den Fehler ;-)

      Übrigens ist dein Vorhaben dank der Funktionen von MySQL ein klassisches  Beispiel für einen Einzeiler. Schau dir mal die Datums- und Zeitfunktionen von MySQL an. Die kannst du auch alle Im UPDATE verwenden.

      Gruß,
      Andreas.