Cette question revient de temps en temps. Il n'y a pas de bonne solution pour exécuter un script .sql directement depuis PHP. Il existe des cas extrêmes où les instructions courantes dans un script .sql ne peuvent pas être exécutées en tant qu'instructions SQL. Par exemple, l'outil mysql a commandes intégrées
qui ne sont pas reconnus par le serveur MySQL, par ex. CONNECT
, TEE
, STATUS
, et DELIMITER
.
Je donne donc +1 au répondre
. Vous devez exécuter votre script .sql en PHP en invoquant le mysql
outil, par exemple avec shell_exec()
.
J'ai réussi ce 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');
Voir aussi mes réponses à ces questions connexes :
- Charger des fichiers .sql depuis l'intérieur PHP
- est-il possible d'appeler un script sql à partir d'une procédure stockée dans un autre script sql ?
- PHP :plusieurs requêtes SQL dans une instruction mysql_query