|
|
|
|
PRATIQUE PHP |
|
|
|
Récupérer le contenu d'une base MySQL directement avec PHP |
|
"Comment sauvegarder une base de données MySQL depuis un serveur mutualisé, sans passer par phpMyAdmin ?"
(05/03/2005) |
|
|
Forum |
|
Réagissez
dans les forums
de JDN Développeurs
|
Il existe deux manières de passer outre phpMyAdmin pour sauvegarder
ses tables : passer directement par la commande mysqldump, ou
utiliser un script PHP qui récupère le contenu de ces bases
(un équivalent simplissime de phpMyAdmin, donc).
mysqldump
a déjà été présenté dans nos colonnes (lire l'article du 22/11/2004), aussi nous allons nous contenter de présenter
un script qui sauvegarde le contenu des tables d'une base de
données précise (et non de toutes les bases accessibles à l'utilisateur...)
dans un fichier texte placé au même niveau que le script, et
que le webmaster pourra télécharger comme tout autre fichier.
Ce fichier servira à recréer la base du début à la fin en
cas de problème majeur avec MySQL. Il sera nommé du nom
de la base sauvegardée, et de la date de la sauvegarde...
<?php
function mysql_structure() {
$host = 'localhost';
$user = 'root';
$pass = '';
$base = 'test2';
mysql_connect($host, $user, $pass);
mysql_select_db($base);
$tables = mysql_list_tables($base);
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-1;
$i++)
{
$insertions
.= "'" . mysql_real_escape_string($ligne[$i]) . "', ";
}
$insertions
= substr($insertions, 0, -2);
$insertions
.= ");\n";
}
if ($insertions != "")
{
$dumpsql[] =
$insertions;
}
}
}
return implode("\r", $dumpsql);
}
echo "Taille du fichier : " . file_put_contents("sqldump-".$base."-".date("Ymd-His").".sql",
mysql_structure());
?>
|
|
|
|
|
|