Sie haben mehr Problemfälle als nur Semikolons innerhalb von Zeichenfolgen.
- Skript eingebaut
Befehle, die nicht von
mysql_query()
ausgeführt werden können , wieUSE
. - Anweisungen, die nicht mit einem Semikolon abgeschlossen werden, wie
DELIMITER
. - Anweisungen, die Semikolons enthalten, aber nicht in Anführungszeichen, wie
CREATE PROCEDURE
.
Ich kenne keinen einfachen Weg, um diese Aufgabe zu bewältigen, ohne den mysql-Befehlszeilenclient zu verlassen. Mir ist klar, dass Sie gesagt haben, dass Sie sich nicht darauf verlassen können, dass dieser Client vorhanden ist, aber ohne diesen Client benötigen Sie eine große Menge an PHP-Code, um das Skript zu parsen und Anweisungen entsprechend auszuführen.
Sie können solchen Code möglicherweise in phpMyAdmin finden Produkt. Dieses Produkt ist jedoch unter der GPL lizenziert. Wenn Sie also Code verwenden, müssen Sie auch Ihr eigenes Projekt unter der GPL lizenzieren.
Siehe auch meine Antworten auf diese verwandten Fragen:
- Ausführen von MySQL *.sql-Dateien in PHP
- Laden von .sql-Dateien von innen heraus PHP
- Ist es möglich, ein SQL-Skript aus einer gespeicherten Prozedur in einem anderen SQL-Skript aufzurufen?