Heim >Datenbank >MySQL-Tutorial >Wie kann ich MySQL *.sql-Dateien von PHP mit Shell_exec() ausführen?

Wie kann ich MySQL *.sql-Dateien von PHP mit Shell_exec() ausführen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-10 15:45:16402Durchsuche

How Can I Execute MySQL *.sql Files from PHP Using shell_exec()?

Ausführen von MySQL *.sql-Dateien in PHP

Beim Erstellen von Website-Datenbanken kann es vorkommen, dass Sie ausführen müssen. SQL-Dateien von PHP, um die Site-Generierung zu automatisieren. Während Zend_Framework von Vorteil sein kann, kann das Ausführen von .sql-Dateien direkt aus PHP aufgrund von Inkonsistenzen in SQL-Anweisungen eine Herausforderung sein.

Lösung: Verwendung von shell_exec()

Der empfohlene Ansatz besteht darin, das MySQL-Tool mit shell_exec() aufzurufen, um Ihr *.sql-Skript auszuführen. Hier ist ein Beispiel:

$command = 'mysql'
        . ' --host=' . $vals['db_host']
        . ' --user=' . $vals['db_user']
        . ' --password=' . $vals['db_pass']
        . ' --database=' . $vals['db_name']
        . ' --execute="SOURCE ' . $script_path
;

Dieser Befehl erstellt einen MySQL-Ausführungsbefehl mit den notwendigen Parametern, um die in $script_path angegebene *.sql-Datei auszuführen.

Unterschiede zwischen shell_exec() und exec()

Obwohl beide Funktionen externe Befehle ausführen, weisen sie einige Unterschiede auf. shell_exec() erfasst die Ausgabe des Befehls und gibt sie als Zeichenfolge zurück, während exec() den Status der Befehlsausführung zurückgibt. In diesem Fall wird Shell_exec() bevorzugt, um die Ausgabe des MySQL-Befehls zu erhalten.

Zusätzliche Überlegungen

Stellen Sie beim Ausführen von *.sql-Dateien sicher, dass der Befehl alle enthält die notwendigen Parameter (db_host, db_user, db_pass, db_name) und Sie verfügen über ausreichende Berechtigungen, um das Skript auszuführen. Verwenden Sie außerdem die Option --execute="SOURCE ..." anstelle von < um die Datei auszuführen.

Das obige ist der detaillierte Inhalt vonWie kann ich MySQL *.sql-Dateien von PHP mit Shell_exec() ausführen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn