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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager