mysql export met php script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Davy fraussen

davy fraussen

13/02/2007 15:10:00
Quote Anchor link
Hallo,

heb volgend scriptje uit een opensource cms gehaald, hiermee kun je een volledige backup maken van je mysql database. de bedoeling is dat je een .SQL bestand krijgt met hierin alle create's en inserts!

in het opensource cms werkt dit script perfect, maar als ik het op mijn cms zelf toepas krijg ik in het .sql bestand de verkeerde inhoud.. ik krijg de volledige broncode van mijn webpagina met eronder pas de backup statements.. misschien dat iemand weet wat er fout is?


$final = '-- Comed NV database backup
--
-- PHP version: '.phpversion().'
-- MySQL version: '.mysql_get_server_info().'
';

$result = mysql_list_tables($db);

while ($table = mysql_fetch_row($result)) {

$i = 0;
$result2 = mysql_query("SHOW COLUMNS FROM $table[0]");
$z = mysql_num_rows($result2);
$final .= "\n--\n-- Comed NV - DB-Export: Table '".$table[0]."'\n--\n\nCREATE TABLE `".$table[0]."` (";

while ($row2 = mysql_fetch_assoc($result2)) {

$i++;
$final .= "`".$row2['Field']."` ".$row2['Type'];
if($row2['Null'] != "YES") { $final .= " NOT NULL"; }
if($row2['Default']) $final .= " DEFAULT '".$row2['Default']."'";

if($i < $z) $final .= ", ";

}

$final .= ");\n";

$inhaltq = mysql_query("SELECT * FROM $table[0]");

while($inhalt = mysql_fetch_array($inhaltq,MYSQL_BOTH)) {

$final .= "\nINSERT INTO `$table[0]` (";
$names = array_keys($inhalt);
$az = count($inhalt)/2; //durch 2 teilen, da array mit numerischen UND assoziativen index

for($i=0;$i<$az;$i++) {

$final .= "`".$names[(2*$i+1)]."`"; //nur die ungeraden schlüssel darstellen (gerade schlüssel -> numerischer index)
if(($i+1)<$az) $final .= ", ";

}
$final .= ") VALUES (";

for($i=0;$i<$z;$i++) {

$einschub = "'".str_replace("'","`", $inhalt[$i])."'";
$final .= preg_replace('/\r\n|\r|\n/', '\r\n', $einschub);
if(($i+1)<$z) $final .= ", ";

}

$final .= ");\n";

}



$final .= "\n";

}

header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Description: File Transfer");

if(is_integer(strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), "msie")) && is_integer(strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), "win" ))) header("Content-Disposition: filename=backup.sql;");
else header("Content-Disposition: attachment; filename=backup.sql;");
header("Content-Transfer-Encoding: binary");
echo $final;
 
PHP hulp

PHP hulp

07/01/2025 18:40:46
 
Marvin S

Marvin S

13/02/2007 15:24:00
Quote Anchor link
Wil je dat ik je script helemaal goed ga maken?
ik heb eventueel ook een mooiere oplossing:

- een script waar je zelf het 1 en ander kan instellen!


edit:

ik zie dat hier op de site al een soort gelijk script als de mijne staat:
klik

dit script maakt een bestand aan met de naam van je database..
nouja lees de comments maar in het script..

suc6
Gewijzigd op 01/01/1970 01:00:00 door Marvin S
 
Davy fraussen

davy fraussen

13/02/2007 16:09:00
Quote Anchor link
Marvin schreef op 13.02.2007 15:24:
Wil je dat ik je script helemaal goed ga maken?
ik heb eventueel ook een mooiere oplossing:

- een script waar je zelf het 1 en ander kan instellen!


edit:

ik zie dat hier op de site al een soort gelijk script als de mijne staat:
klik

dit script maakt een bestand aan met de naam van je database..
nouja lees de comments maar in het script..

suc6


bedankt voor de tip!

maar wat eigenlijk mijn bedoeling is, is dat in plaats van het bestand op de server weg te schrijven, men het bestand lokaal kan opslaan...

dit gaat met deze headers:

header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Description: File Transfer");

if(is_integer(strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), "msie")) && is_integer(strpos(strtolower($_SERVER["HTTP_USER_AGENT"]), "win" ))) header("Content-Disposition: filename=backup.sql;");
else header("Content-Disposition: attachment; filename=backup.sql;");
header("Content-Transfer-Encoding: binary");

heb nu deze headers eens geprobeerd uw script, maar hier ook wordt de rest van de html pagina ook in het bestand weggeschreven..

dus ik zou alleen 1 variabele in dit bestand willen zetten in plaats van de hele html code enzo.
iemand nog een tip??
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.