Den här frågan dyker upp då och då. Det finns ingen bra lösning för att köra ett .sql-skript direkt från PHP. Det finns edge-fall där satser som är vanliga i ett .sql-skript inte kan köras som SQL-satser. Till exempel har mysql-verktyget inbyggda kommandon
som inte känns igen av MySQL-servern, t.ex. CONNECT
, TEE
, STATUS
och DELIMITER
.
Så jag ger +1 till @Ignacio Vazquez-Abramss svara
. Du bör köra ditt .sql-skript i PHP genom att anropa mysql
verktyg, till exempel med shell_exec()
.
Jag fick det här testet att fungera:
$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 även mina svar på dessa relaterade frågor:
- Laddar in .sql-filer inifrån PHP
- är det möjligt att anropa ett sql-skript från en lagrad procedur i ett annat sql-skript?
- PHP:flera SQL-frågor i en mysql_query-sats