Vous avez plus de cas problématiques que de simples points-virgules dans les chaînes.
- Script intégré
commandes qui ne peuvent pas être exécutées par
mysql_query()
, commeUSE
. - Déclarations qui ne se terminent pas par un point-virgule, comme
DELIMITER
. - Instructions contenant des points-virgules, mais pas entre guillemets, comme
CREATE PROCEDURE
.
Je ne connais pas de moyen simple de gérer cette tâche, sans passer par le client de ligne de commande mysql. Je me rends compte que vous avez dit que vous ne pouvez pas compter sur la présence de ce client, mais sans ce client, vous avez besoin d'une grande quantité de code PHP pour analyser le script et exécuter les instructions de manière appropriée.
Vous pourrez peut-être trouver ce code dans le phpMyAdmin produit. Cependant, ce produit est sous licence GPL, donc si vous utilisez l'un des codes, vous devez également licencier votre propre projet sous licence GPL.
Voir aussi mes réponses à ces questions connexes :
- Exécution des fichiers MySQL *.sql en PHP
- 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 ?