gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:57:33 24 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 工具在 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 - 在 PHP 中运行 MySQL *.sql 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4027769/

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