Exporter une base de donnée MySQL
Bonjour à tous,
Je cherche à exporter une base de donnée sans passer par le fameux PhpMyAdmin. Alors j'ai pompé le code ci-dessous sur le net.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
| <?php
function mysql_structure() {
$host = 'localhost';
$user = 'root';
$pass = '';
$base = 'bdd';
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());
?> |
Ensuite j'ai modifié la ligne en rouge par la ligne en verte (car mysql_list_tables n'est plus supportée) ci-dessous, ce qui me donne le code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
| <?php
function mysql_structure()
{
$host = 'localhost';
$user = 'root';
$pass = '';
$base = 'bdd';
mysql_connect($host, $user, $pass);
mysql_select_db($base);
$tables = mysql_query( 'SHOW TABLES' );
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);
}
$base = 'bdd';
echo "Taille du fichier : " . file_put_contents("sqldump-".$base."-".date("Ymd-His").".sql", mysql_structure());
?> |
Et ça, ça m'affiche "taille du fichier : blablabla"
Mais ça n'exporte pas la base de donnée "bdd", donc je me demande bien ce qui ne tourne pas rond.
J'ai trouvé ce code sur un autre site.
Pourriez-vous m'aider ?
cdt
Globolite