Datum in Tabelle umkonvertieren
tomtomtom
- php
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
natürlich sind die namen hp_news und news in wahrheit identisch. das habe ich eben nur für den eintrag angepaßt.
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.