Pedro Caires | Web Development
1dez/090

Fazendo Backup do banco MySQL via PHP

O ideal seria usar o mysqldump (http://www.mysql.com/doc/en/mysqldump.html) para isso.

Porém vamos à dica.

No exemplo abaixo ao final será criado um arquivo BANCO.sql com o código SQL necessário para recriar as tabelas.
Se você quiser que saia no browser, basta trocar os fwrite por echo! :)

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
<?
// Conecta ao banco
$servidor = "localhost";
$usuario = "aquiousuario";
$senha = "aquiasenha";
$banco = "nomedobanco";
mysql_connect($servidor, $usuario, $senha) or die(mysql_error());
mysql_select_db($banco) or die(mysql_error());
 
$abre = fopen("BANCO.sql", "w"); // nome do arquivo que será salvo o backup
 
$sql1 = mysql_list_tables($banco) or die(mysql_error());
 
while ($ver=mysql_fetch_row($sql1)) {
	$tabela = $ver[0];
	$sql2 = mysql_query("SHOW CREATE TABLE $tabela");
	while ($ver2=mysql_fetch_row($sql2)) {
		fwrite($abre, "-- Criando tabela: $tabela\n");
		$pp = fwrite($abre, "$ver2[1]\n\n-- Salva os dados\n");
		$sql3 = mysql_query("SELECT * FROM $tabela");
 
		while($ver3=mysql_fetch_row($sql3)) {
			$grava = "INSERT INTO $tabela VALUES ('";
			$grava .= implode("', '", $ver3);
			$grava .= "')\n";
			fwrite($abre, $grava);
		}
		fwrite($abre, "\n\n");
	}
}
 
$finaliza = fclose($abre);
 
if($finaliza) {
	echo "Prontim! :)";
}
?>

Espero que aproveitem esta dica! :)

Categorias: MySQL, PHP Sem Comentários