Hallo,
ich habe versucht einen PHP-Script zu bauen, der mir soviele Datensätze aus meiner MySQL-Tabelle exportiert und anschließend löscht, damit nur noch die 100 neusten übrig bleiben. Des Weiteren soll ein zweiter Script die Datensätze in eine andere Relation einfügen, die als Archiv dient.
Allerdings hat der erste Script jetzt schon mehrmals meine Relation zerfetzt, der zweite Script importiert falsch* und ich finde einfach keine Lösung.
Hier anbei die 2 Scripts, die ich zum Exportieren / Löschen und Importieren verwende.
Herausfinden, Exportieren und Löschen:
[code]$rows = mysql_result(mysql_query("SELECT count() FROM «relation»"),0); // Datensätze zählen
/ echo $rows.’ Einträge
’; */
for ($rows = $x; $x <= 100; $x–) { // Wenn es mehr als 100 Datensätze sind, dann…
$query1 = ‘SELECT * FROM «relation» ORDER BY Msg_ID ASC’;
$sql = mysql_query($query1) or die(mysql_error());
$oldest = mysql_result($sql,0); // den ältesten Eintrag suchen…
/* echo ‘Älteste ID: ‘.$oldest.’
’; */
$stmt = mysql_query("SELECT * FROM «relation» WHERE Msg_ID ='$oldest'");
$row = mysql_fetch_assoc($stmt);
$export = ',
(’.$row[“Msg_ID”].’, ‘’.$row[“Sender”].’’, ‘’.str_replace("’", “’”, $row[“Message”]).’’, ‘’.$row[“Timestamp”].’’)’; // seine Daten auslesen…
/* echo $export.’
’; */
$rowfile = fopen(“messages.dat”,“a”);
fwrite($rowfile,$export); // in eine Datei speichern…
fclose($rowfile);
$query2 = ‘DELETE FROM «datenbank»
.«relation»
WHERE «relation»
.Msg_ID
= ‘.$oldest.’ LIMIT 1’; // und aus der Datenbank löschen…
mysql_query($query2);
} // …bis es wieder 100 Datensätze sind.[/code]
In andere Relation importieren:
[code]include(“includes/database/connect.db.php”);
$import = “INSERT INTO «relation»
(Msg_ID
, Sender
, Message
, Timestamp
) VALUES”;
$rowfile = file_get_contents(“messages.dat”);
$import .= substr($rowfile, 1);
$import .= “;”;
mysql_query($import);[/code]* Falscher Import in Punkto Umlauten. Wenn ich den Script wie oben laufen lassen, denn werden zwar die Umlaute richtig in die Datenbank eingefügt, aber der Output-Script kann es nicht mehr lesen. Wenn ich statt “file_get_contents(“messages.dat”);” den Inhalt der messages.dat einsetze, dann werden die Umlaute ‘falsch’ in die Datenbank eingefügt, aber der Output-Script kann es lesen. Warum?!
Schon einmal vielen Dank im Vorraus beim Helfen.
Falls Syntax-Highlighting benötigt ist, kann ich es auch via. Pastebin einbinden.
Gruß, DMan