Tato otázka se čas od času objeví. Neexistuje žádné dobré řešení pro spouštění skriptu .sql přímo z PHP. Existují okrajové případy, kdy příkazy běžné ve skriptu .sql nelze provést jako příkazy SQL. Například nástroj mysql má vestavěné příkazy
které nejsou rozpoznány serverem MySQL, např. CONNECT
, TEE
, STATUS
a DELIMITER
.
Takže dávám +1 uživateli @Ignacio Vazquez-Abrams odpovědět
. Skript .sql byste měli spustit v PHP vyvoláním mysql
nástroj, například pomocí shell_exec()
.
Tento test mi funguje:
$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');
Viz také mé odpovědi na tyto související otázky:
- Načítání souborů .sql zevnitř PHP
- je možné volat skript SQL z uložené procedury v jiném skriptu SQL?
- PHP:více SQL dotazů v jednom příkazu mysql_query