Hi
Ich habe heute eine MySQL-Klasse geschrieben.
Ist erstmal nichts besonderes, aber diese Klasse kann MySQL-Dumps erstellen.
Das funktioniert aber nicht auf jedem Server.
Hab es auf 1blu, funpic, gimyweb, ... getestet
Es hat komischerweiße nur bei funpic nicht funktioniert.
Kann mir wer von euch sagen warum?
Alles anzeigen
Die betreffende Methode ist getDump.
Danke
lu
Ich habe heute eine MySQL-Klasse geschrieben.
Ist erstmal nichts besonderes, aber diese Klasse kann MySQL-Dumps erstellen.
Das funktioniert aber nicht auf jedem Server.
Hab es auf 1blu, funpic, gimyweb, ... getestet
Es hat komischerweiße nur bei funpic nicht funktioniert.
Kann mir wer von euch sagen warum?
Quellcode
- <?php
- /*******************************/
- /* Coded by Ludwig Kriechbaum */
- /* Copyright 2008 */
- /* venum-lk@gmx.de */
- /*******************************/
- // MySQL - Zugangsdaten
- define('MYSQL_HOST', 'localhost'); // MySQL-Host
- define('MYSQL_USER', 'user'); // Datenbankbenutzer
- define('MYSQL_PASS', 'password'); // Passwort
- define('MYSQL_DATABASE', 'database'); // Datenbank
- // mysqlv - Einstellungen
- define('DUMP_FOLDER', 'dump/'); // Speicherverzeichnis des Dumps (am Ende muss ein / stehen!)
- define('DUMP_SKIN', '1'); // Art des Dumps (0=Nur Inhalt; 1=Inhalt + Struktur; 2=Nur Struktur)
- class mysqlv {
- ...
- var $_dump = "";
- var $_tables = array();
- ...
- function getDump() {
- $this->_dump .= "-- mysqlv SQL Dump\n-- http://www.venum-lk.de\n-- v0.1\n-- \n-- Host: ".MYSQL_HOST."\n-- Erstellungszeit: ".date("d.m.Y")." um ".date("H:i")."\n-- \n-- Datenbank: `".MYSQL_DATABASE."`\n-- \n\n-- --------------------------------------------------------\n\n";
- // Tabellen der DB auflisten
- $sql = mysql_query("SHOW TABLES FROM ".MYSQL_DATABASE.";");
- while($result = mysql_fetch_assoc($sql)) {
- $this->_tables[] = $result['Tables_in_'.MYSQL_DATABASE];
- }
- $count = count($this->_tables);
- // Mit for() jede Tabelle ansteuern
- for($i=0;$i<$count;$i++) {
- // Struktur der Tabellen (DUMP_SKIN = 1 || 2)
- if(DUMP_SKIN) {
- $this->_dump .= "-- \n-- Tabellenstruktur der Tabelle `".$this->_tables[$i]."`\n-- \n\nCREATE TABLE ".$this->_tables[$i]." (\n";
- $sql = mysql_query("DESCRIBE ".$this->_tables[$i].";");
- // Spalteneigenschaften abholen
- $PRIMARY = "";
- while($res = mysql_fetch_assoc($sql)) {
- if($res['Null'] == "YES") {
- $NULL = "NULL";
- }else{
- $NULL = "NOT NULL";
- }
- if($res['Extra'] == "") {
- $EXTRA = "";
- }else{
- $EXTRA = " ";
- }
- if($res['Key'] == "PRI") $PRIMARY = $res['Field'];
- $this->_dump .= " ".$res['Field']." ".$res['Type']." ".$NULL.$EXTRA.$res['Extra'].",\n";
- }
- $this->_dump .= " PRIMARY KEY (`".$PRIMARY."`)\n);\n\n";
- }
- // Inhalt der Tabellen (DUMP_SKIN = 0 || 1)
- if(!DUMP_SKIN OR DUMP_SKIN == 1) {
- $this->_dump .= "-- \n-- Inhalt der Tabelle `".$this->_tables[$i]."`\n-- \n\n";
- $sql = mysql_query("SELECT * FROM ".$this->_tables[$i].";");
- while($res = mysql_fetch_row($sql)) {
- $data = array();
- for($j=0;$j<mysql_num_fields($sql);$j++){
- $data[] = mysql_real_escape_string($res[$j]);
- }
- $this->_dump .= "INSERT INTO ".$this->_tables[$i]." VALUES ('".implode("','",$data)."');\n";
- }
- $this->_dump .= "\n";
- }
- if($i!=($count-1)) $this->_dump .= "-- --------------------------------------------------------\n\n";
- }
- $handle = fopen(DUMP_FOLDER.MYSQL_DATABASE."_dump_".time().".sql", "w");
- fwrite($handle, $this->_dump);
- fclose($handle);
- }
- ...
- }
- ?>
Die betreffende Methode ist getDump.
Danke
lu