Dette spørgsmål dukker op fra tid til anden. Der er ingen god løsning til at køre et .sql-script direkte fra PHP. Der er edge-tilfælde, hvor sætninger, der er almindelige i et .sql-script, ikke kan udføres som SQL-sætninger. For eksempel har mysql-værktøjet indbyggede kommandoer
som ikke genkendes af MySQL-serveren, f.eks. CONNECT
, TEE
, STATUS
, og DELIMITER
.
Så jeg giver +1 til @Ignacio Vazquez-Abrams's svar
. Du bør køre dit .sql-script i PHP ved at kalde mysql
værktøj, for eksempel med shell_exec()
.
Jeg fik denne test til at virke:
$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');
Se også mine svar på disse relaterede spørgsmål:
- Indlæser .sql-filer indefra PHP
- er det muligt at kalde et sql-script fra en lagret procedure i et andet sql-script?
- PHP:flere SQL-forespørgsler i én mysql_query-sætning