PHP での *.sql ファイルの実行: ソリューションの探索
PHP から .sql ファイルを直接実行すると、特定の理由により特有の課題が発生します。エッジケース。 .sql スクリプトで一般的なステートメントは、SQL ステートメントとして認識されない可能性があります。
推奨される解決策: mysql ツールの活用
最も効果的なアプローチは、 mysql ツールを作成し、shell_exec() などの関数を使用して PHP から呼び出します。これにより、すべてのステートメントとの互換性が確保されます。
shell_exec() を使用したサンプル コード
$command = 'mysql' . ' --host=' . $vals['db_host'] . ' --user=' . $vals['db_user'] . ' --password=' . $vals['db_pass'] . ' --database=' . $vals['db_name'] . ' --execute="SOURCE ' . $script_path ; $output1 = shell_exec($command . '/site_db.sql"'); $output2 = shell_exec($command . '/site_structure.sql"');
Shell_exec() と exec() の比較
shell_exec() と exec() はどちらも外部コマンドを実行しますが、 shell_exec() はサブシェルでコマンドを実行しますが、 exec() は現在のプロセスでコマンドを実行し、コマンドが完了するまで戻りません。
さらなる考慮事項
大規模なデータベース操作の場合は、Zend_Db や Doctrine などのデータベース抽象化レイヤーの使用を検討してください。これらのレイヤーは、PHP でデータベースを操作するためのより便利で信頼性の高い方法を提供します。
関連リソース:
以上がPHP アプリケーション内で外部 *.sql ファイルを効果的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。