Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bottoni

Restaurar BACKUP do MySql em PHP

Recommended Posts

Boa noite a todos.

 

Estou com dificuldades em restaurar um backup de um banco de dados meu pelo php.

 

Minha situação é a seguinte.

Tenho um arquivo "backup.sql" onde estão os códigos SQL para a criação das tabelas e as inserções.

Se eu copio o conteúdo deste arquivo e colo, no phpmyadmin por exemplo, ele é executado e o backup restaurado corretamente.

 

Porém, minha ideia era fazer esse backup automaticamente pelo sistema, apenas apertando um botão.

Criei um código que pegava o conteúdo desse arquivo "backup.sql" e executava. Não acontecia nada. O banco continuava igual!!!

 

Fazendo alguns testes descobri que o comando mysql_query($minhas_consultas); não executa mais de uma consulta por vez.

Explicando melhor, se $minhas_consultas for "UPDATE t1 SET nome = 'teste'; UPDATE t2 SET nome = 'teste';"; os comandos não são executados.

Mas se eu tiver $minhas_consultas1 = "UPDATE t1 SET nome = 'teste';"; e $minhas_consultas2 = "UPDATE t2 SET nome = 'teste';"; as duas são executadas.

 

Sendo assim, mudei meu código que cria o backup do banco de dados de modo a inserir uma palavra de controle, para separar as consultas umas das outras.

E mudei também o código que restaura o backup, deixando ele da seguinte maneira:

 

// Pego o conteudo do arquivo "backup.sql"
$consulta = file_get_contents($diretorioOrigem.$backup['Arquivo']);

// Separo as consultas usando a palavra de controle $separador
$consultas = explode($separador, $consulta);

// Executo cada consulta separadamente
for ($i = 0; $i < count($consultas); $i++)
  $conexao->consulta($consultas[$i]);

 

Assim está funcionando muito bem. O backup é restaurado corretamente.

Mas não estou satisfeito! :P

 

Existe algum modo de executar várias consultas juntas no mysql pelo php?

E alguém tem alguma crítica a respeito desse meu código atual? Já pode ajudar!

 

Muito obrigado!

Abraço, Marcelo F Bottoni

Compartilhar este post


Link para o post
Compartilhar em outros sites

A forma procedural não vai funcionar mesmo, queries múltiplas não são suportadas, isso está documentado no manual do PHP.

 

Pesquise sobre a mysqli e sobre PDO e, se possível, prefira a PDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.