Sauvegarder/Exporter une base de données avec PHP
Posté par jbj le 4 sept 2007 dans PHP • 19 commentairesMême si vous avez installé PhpMyAdmin sur votre serveur, il peut être utile de créer une fonction automatisant la sauvegarde de votre base de données.
Cette fonction retournera une variable contenant un dump de votre base, libre à vous de l'enregistrer sur un fichier, de l'enregistrer dans un répertoire protégé ou encore de vous l'envoyer par mail...
Note essentiellement destinée aux débutants:
Prenez garde au fait qu'une sauvegarde d'une base de données est une donnée extrêmement sensible, même si les mot de passes sont cryptés. Par conséquent, il ne faut jamais enregistrer ce fichier hors d'un répertoire protégé par mot de passe.
function dump()
{
//Connexion à la base
$db = mysql_connect('localhost', 'login', 'mdp');
mysql_select_db('nom_de_la_base',$db);
$tables = mysql_list_tables('nom_de_la_base', $db);
while ($donnees = mysql_fetch_array($tables))
{
$table = $donnees[0];
$res = mysql_query('SHOW CREATE TABLE '.$table);
if ($res)
{
$insertions = '';
$tableau = mysql_fetch_array($res);
$tableau[1] .= ';';
$dumpsql[] = str_replace("\n", '', $tableau[1]);
$req_table = mysql_query('SELECT * FROM '.$table);
$nbr_champs = mysql_num_fields($req_table);
while ($ligne = mysql_fetch_array($req_table))
{
$insertions .= 'INSERT INTO '.$table.' VALUES (';
for ($i=0; $i<$nbr_champs; $i++)
{
$insertions .= '\'' . mysql_real_escape_string($ligne[$i]) . '\', ';
}
$insertions = substr($insertions, 0, -2);
$insertions .= ");\n";
}
if ($insertions != '') $dumpsql[] = $insertions;
}
}
return implode("\n", $dumpsql);
}









