hi,
da mein Hoster mir die functionen exec und shell_exec verweigert kann ich leider damit kein MYSQL Backup machen. Nun möchte ich mich jedoch nicht immer ins phpMyAdmin begeben um ein Backup meiner Datenbank zu machen (Davon abgesehen: Sollen auch andere Admins ein Backup machen können ohne gleiche meine Passwörter zu kennen )
Nun habe ich schon angefangen und mich auch gleich an Klassen versucht!
Hier erstmal das Script:
Folgendes erhalte ich wenn ich mit phpMyAdmin ein "Backup" mache:
und folgendes bekomme ich zustande:
Ich bin eigentlich schon ganz zufrieden jedoch wie man an dem [**] erkennen kann fehlt mir da der "DEFAULT CHARSET=latin1" ich könnte den natürlich per Hand eintragen aber das ist ja nicht ganz Sinn der Sache
Bisher habe ich alle Informationen mit SHOW TABLE STATUS, SHOW FIELDS und SHOW KEYS herrausfinden können jedoch der charset bleibt mir ein kleines Rätzel.
Wenn ich mir nun von SHOW TABLE STATUS den array ausgeben lasse (Zeile 22) sehe ich dort: [Collation] => latin1_swedish_ci
Kann es sein dass es das ist? Kann/muss ich den splitten (explode) und dann den ersten teil ausgeben?
Soweit zu meinem Problem.
Über Informationen, auf was für Probleme ich mit dem Script stoßen könnte oder was ich vergessen habe wäre ich ebenfalls sehr dankbar.
Ich wünsche frohe Feiertage und danke schonmal im vorraus.
da mein Hoster mir die functionen exec und shell_exec verweigert kann ich leider damit kein MYSQL Backup machen. Nun möchte ich mich jedoch nicht immer ins phpMyAdmin begeben um ein Backup meiner Datenbank zu machen (Davon abgesehen: Sollen auch andere Admins ein Backup machen können ohne gleiche meine Passwörter zu kennen )
Nun habe ich schon angefangen und mich auch gleich an Klassen versucht!
Hier erstmal das Script:
PHP:
<?php
class mysql_backup{
var $host;
var $database;
function create_db_startcomment(){
$out = "
-- //////////////////////////////////////////////////////////////\n
-- Host: ".$this->$host."\n
-- Time: ".date('d.m.Y - H:i')."\n
-- Database: ".$this->$database."\n
-- //////////////////////////////////////////////////////////////\n
";
return $out;
}
function create_table_structure(){
$anfrage1=mysql_query("SHOW TABLE STATUS FROM ".$this->$database."");
while($row1=mysql_fetch_array($anfrage1)){
//echo"<pre>";
//print_r($row1);
//echo"</pre>";
$out .= "
\n
-- //////////////////////////////////////////////////////////\n
-- ---- Tabellenstruktur für `".$row1['Name']."`\n
-- //////////////////////////////////////////////////////////\n\n
";
$tmp2 = array();
$out .= "CREATE TABLE ";
$out .= "IF NOT EXISTS ";
$out .= "`".$row1[0]."` (\n";
$anfrage2=mysql_query("SHOW FULL FIELDS FROM `".$row1['Name']."`");
while($row2=mysql_fetch_array($anfrage2)){
//echo"<pre>";
//print_r($row2);
//echo"</pre>";
$tmp .= "`".$row2['Field']."` ".$row2['Type']." ";
if($row2['Null']=="NO") { $tmp .= " NOT NULL";}
if($row2['Null']=="YES") { $tmp .= " NULL";}
if($row2['Extra']=="auto_increment") { $tmp .= " AUTO_INCREMENT";}
if($row2['Comment']!="") { $tmp .= " COMMENT '".$row2['Comment']."'";}
$tmp2[] .= $tmp; $tmp="";
}
$anfrage3=mysql_query("SHOW KEYS FROM `".$row1[0]."`");
while($row3=mysql_fetch_array($anfrage3)){
//echo"<pre>";
//print_r($row3);
//echo"</pre>";
$tmp .= "".$row3['Key_name']." KEY (`".$row3['Column_name']."`)";
}
if(!empty($tmp)){ $tmp2[] .= $tmp; $tmp="";}
$out .= implode(",\n",$tmp2);
$out .= "\n)";
$out .= " ENGINE=".$row1['Engine']."";
if($row1['Auto_increment']!="") { $out .= " AUTO_INCREMENT=".$row1['Auto_increment'];}
$out .= "";
$out .= "\n\n";
}
return $out;
}
}
$backup = new mysql_backup;
$backup -> $host = "";
$backup -> $database = "";
$backup_str = $backup -> create_db_startcomment();
$backup_str .= $backup -> create_table_structure();
echo nl2br($backup_str);
?>
Folgendes erhalte ich wenn ich mit phpMyAdmin ein "Backup" mache:
Code:
CREATE TABLE IF NOT EXISTS `mhpsp_bereiche` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`f1` varchar(50) NOT NULL,
`f2` char(2) NOT NULL,
`f3` text NOT NULL,
`f4` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
und folgendes bekomme ich zustande:
Code:
CREATE TABLE IF NOT EXISTS `mhpsp_bereiche` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`f1` varchar(50) NOT NULL,
`f2` char(2) NOT NULL,
`f3` text NOT NULL,
`f4` tinyint(4) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM [**] AUTO_INCREMENT=13
Ich bin eigentlich schon ganz zufrieden jedoch wie man an dem [**] erkennen kann fehlt mir da der "DEFAULT CHARSET=latin1" ich könnte den natürlich per Hand eintragen aber das ist ja nicht ganz Sinn der Sache
Bisher habe ich alle Informationen mit SHOW TABLE STATUS, SHOW FIELDS und SHOW KEYS herrausfinden können jedoch der charset bleibt mir ein kleines Rätzel.
Wenn ich mir nun von SHOW TABLE STATUS den array ausgeben lasse (Zeile 22) sehe ich dort: [Collation] => latin1_swedish_ci
Kann es sein dass es das ist? Kann/muss ich den splitten (explode) und dann den ersten teil ausgeben?
Soweit zu meinem Problem.
Über Informationen, auf was für Probleme ich mit dem Script stoßen könnte oder was ich vergessen habe wäre ich ebenfalls sehr dankbar.
Ich wünsche frohe Feiertage und danke schonmal im vorraus.
Zuletzt bearbeitet: