Essa pergunta surge de tempos em tempos. Não há uma boa solução para executar um script .sql diretamente do PHP. Existem casos extremos em que as instruções comuns em um script .sql não podem ser executadas como instruções SQL. Por exemplo, a ferramenta mysql tem comandos embutidos que não são reconhecidos pelo MySQL Server, ex.
CONNECT
, TEE
, STATUS
e DELIMITER
. Então eu dou +1 para @Ignacio Vazquez-Abrams resposta . Você deve executar seu script .sql em PHP invocando o
mysql
ferramenta, por exemplo com shell_exec()
. Eu tenho este teste funcionando:
$command = "mysql --user={$vals['db_user']} --password='{$vals['db_pass']}' "
. "-h {$vals['db_host']} -D {$vals['db_name']} < {$script_path}";
$output = shell_exec($command . '/shellexec.sql');
Veja também minhas respostas para essas perguntas relacionadas:
- Carregar arquivos .sql de dentro PHP
- é possível chamar um script sql de um procedimento armazenado em outro script sql?
- PHP:várias consultas SQL em uma instrução mysql_query