gpt4 book ai didi

php - 在 PHP 中运行 MySQL *.sql 文件

转载 作者:行者123 更新时间:2023-11-29 17:23:27 26 4
gpt4 key购买 nike

我有两个*.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"');

...我从未获得有用的输出,但遵循 some suggestionsanother thread终于一切顺利。我切换到--option=value命令和使用的格式 --execute="SOURCE ..."而不是<执行该文件。

此外,我从来没有得到关于 shell_exec() 之间差异的良好解释。和exec() .

最佳答案

这个问题时不时就会出现。直接从 PHP 运行 .sql 脚本没有好的解决方案。在某些边缘情况下,.sql 脚本中常见的语句无法作为 SQL 语句执行。例如,mysql工具有MySQL服务器无法识别的builtin commands,例如CONNECTTEESTATUSDELIMITER

所以我给@Ignacio Vazquez-Abrams 的 answer +1 。您应该通过调用 mysql 工具(例如使用 shell_exec() )在 PHP 中运行 .sql 脚本。

<小时/>

我的测试成功了:

$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 - 在 PHP 中运行 MySQL *.sql 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51108816/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com