Du har fler problemfall än bara semikolon inom strängar.
- Skript inbyggt
kommandon som inte kan köras av
mysql_query()
, somUSE
. - Uttalanden som inte avslutas med semikolon, som
DELIMITER
. - Uttalanden som innehåller semikolon, men inte inom citattecken, som
CREATE PROCEDURE
.
Jag vet inte om ett enkelt sätt att hantera den här uppgiften, utan att skicka ut till mysql kommandoradsklient. Jag inser att du sa att du inte kan lita på att den klienten är närvarande, men utan den klienten behöver du en stor mängd PHP-kod för att analysera skriptet och exekvera satser på rätt sätt.
Du kanske kan hitta sådan kod i phpMyAdmin produkt. Den produkten är dock licensierad under GPL, så om du använder någon av koden måste du också licensiera ditt eget projekt under GPL.
Se även mina svar på dessa relaterade frågor:
- Kör MySQL *.sql-filer i PHP
- Läser 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?