在PHP中运行MySQL * .sql文件
*.sql
创建新的网站数据库时,我有两个文件。第一个文件创建所有表。第二个文件填充一些默认记录。我想从PHP执行这些文件。我还将使用Zend_Framework,如果这将有助于完成此任务。
- 我没有控制台访问权限
- 我正在尝试从我们的应用程序中自动生成网站。
使用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"');
…我从来没有得到过有用的输出,但是在另一个线程上遵循了一些建议,最终使它们全部正常工作。我将命令切换为格式,而不是用来执行文件。--option=value``--execute="SOURCE
..."``<
另外,我从来没有得到的区别的一个很好的解释shell_exec()
和exec()
。
回答:
这个问题不时出现。没有直接从PHP运行.sql脚本的好的解决方案。在某些情况下,.sql脚本中常见的语句不能作为SQL语句执行。例如,MySQL的工具已经内置命令不是由MySQL服务器的认可,例如CONNECT
,TEE
,STATUS
,和DELIMITER
。
所以我给+1 @Ignacio Vazquez-
Abrams的答案。您应该通过调用mysql
工具在PHP中运行.sql脚本,例如使用shell_exec()
。
我得到了这个测试的工作:
$command = "mysql --user={$vals['db_user']} --password='{$vals['db_pass']}' " . "-h {$vals['db_host']} -D {$vals['db_name']} < {$script_path}";
$output = shell_exec($command . '/shellexec.sql');
另请参阅我对以下相关问题的回答:
- 从PHP内加载.sql文件
- 是否可以从另一个sql脚本中的存储过程中调用sql脚本?
- PHP:在一个mysql_query语句中进行多个SQL查询
以上是 在PHP中运行MySQL * .sql文件 的全部内容, 来源链接: utcz.com/qa/418265.html