在PHP中运行MySQL * .sql文件

*.sql创建新的网站数据库时,我有两个文件。第一个文件创建所有表。第二个文件填充一些默认记录。我想从PHP执行这些文件。我还将使用Zend_Framework,如果这将有助于完成此任务。

  1. 我没有控制台访问权限
  2. 我正在尝试从我们的应用程序中自动生成网站。

使用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服务器的认可,例如CONNECTTEESTATUS,和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

回到顶部