To pytanie pojawia się od czasu do czasu. Nie ma dobrego rozwiązania do uruchamiania skryptu .sql bezpośrednio z PHP. Istnieją skrajne przypadki, w których instrukcje wspólne w skrypcie .sql nie mogą być wykonywane jako instrukcje SQL. Na przykład narzędzie mysql ma wbudowane polecenia
które nie są rozpoznawane przez serwer MySQL, np. CONNECT
, TEE
, STATUS
i DELIMITER
.
Więc daję +1 @Ignacio Vazquez-Abramsowi odpowiedz
. Powinieneś uruchomić swój skrypt .sql w PHP, wywołując mysql
narzędzie, na przykład z shell_exec()
.
Udało mi się uruchomić ten test:
$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');
Zobacz także moje odpowiedzi na te powiązane pytania:
- Ładowanie plików .sql od wewnątrz PHP
- czy można wywołać skrypt sql z procedury składowanej w innym skrypcie sql?
- PHP:wiele zapytań SQL w jednej instrukcji mysql_query