Hallo zusammen,
Ich habe einen Apache-Webserver mit PHP + MySQL laufen.
Ich suche eine Möglichkeit per PHP-Script einen kompletten
MySQL-Dump des kompletten MySQL-Systems zu machen um diesen
dann weiter zu verwenden. (per FTP/Mail verschicken o. ä.)
Bisher habe ich nur komplette Administrationsprogramme in PHP
gefunden.
Suche jedoch nur den Code für einen MySQL-Dump.
Im Endeffekt soll einfach eine localhost.sql erstellt werden.
(ähnlich phpMyAdmin)
Gibt es überhaupt die direkte Anweisung in PHP für einen Dump?
Hi,
Es gibt mehrere Wege dies zu realisieren, einer davon ist ein Skript wie dieses. Es nutzt die PHP-Funktion mysql_list_tables, den SQL-Befehl ‚SHOW CREATE TABLE‘ für jede Tabelle und eine einfache Selektion aller Daten, um die Inserts zu schreiben. Du kannst es sicher für Deine Anwendung anpassen.
$dbhost = "localhost";
$dbuser = "user";
$dbpwd = "pass";
$dbname = "datenbank";
$conn = @mysql\_connect($dbhost, $dbuser, $dbpwd);
if (!$conn) {
die(mysql\_error());
}
mysql\_select\_db($dbname);
$f = fopen("/absoluter/pfad/zur/localhost.sql", "w");
$tables = mysql\_list\_tables($dbname);
while ($cells = mysql\_fetch\_array($tables)) {
$table = $cells[0];
fwrite($f,"DROP TABLE `$table`;\n");
$res = mysql\_query("SHOW CREATE TABLE `$table`");
if ($res) {
$create = mysql\_fetch\_array($res);
$create[1] .= ";";
$line = str\_replace("\n", "", $create[1]);
fwrite($f, $line."\n");
$data = mysql\_query("SELECT \* FROM `$table`");
$num = mysql\_num\_fields($data);
while ($row = mysql\_fetch\_array($data)){
$line = "INSERT INTO `$table` VALUES(";
for ($i=1;$i
Die entsprechende Importfunktion ist leicht zu realisieren: die exportierte Datei einfach zeilenweise einlesen und mysql\_query für jede Zeile ausführen.
Nachteil: die Create-Tables sind etwas schwer leserlich, da der Zeilenumbruch nach den Feldern fehlt. Dafür ist der Import leichter, da genau deshalb das Parsen erspart bleibt.
Schönen Gruß,
Rudy