Christian: SQL-Dateien (*.sql) auslesen und ausführen

Hi,

ich möchte eine Art Install-Skript schreiben, das mir Datenbank Tabellen (mysql) erstellt. Dazu möchte ich die SQL-Befehle extern auslagern, also in *.sql-Dateien. Ein PHP Skript soll diese dann auslesen und die SQL-Befehle ausführen.

Die Befehle werden mit ; getrennt. Idee war:

$file = file("*.sql", "r"); // Datei einlesen.
$file = implode("", $file); // Zeilen in einen langen String packen
$sql = explode(";", $file); // nach ; splitten

for($i = 0; $i < count($sql); $i++)
{
  mysql_query($sql[$i]);
}

Sollte eigentlich klappen. nur was mach ich, wenn irgendwo ein Textfeld oder so das ; enthält??? Ich müsste dann sicher mit Regulären Ausdrücken arbeiten.

Außerdem erscheint mir das etwas umständlich bzw. unschön. gibts da nicht eine bessere möglichkeit???

Gruß
Christian

  1. Korrekt die aktuelle Variante von mysql_query kann imemr nur eine Anweisunge ausführen. Mit der neuen mysqli-Extensionen und MySQL 4.1 wird sich das ändern.

    Du müßtest also derzeit tatsächlich eine Art SQL-Parser bauen. phpMyAdmin enthält so etwas - dort kannst du ja mal ein wenig im Quellcode schmökern.

    Regards
    Thomas