【发布时间】:2023-05-14 07:07:02
【问题描述】:
你能在 PHP 脚本 (bar.php) 中执行 MySQL 脚本 (foo.sql) 吗?如果是这样,怎么做?
而且,这是推荐还是不推荐的做法,为什么还是不推荐?
提前致谢。
【问题讨论】:
你能在 PHP 脚本 (bar.php) 中执行 MySQL 脚本 (foo.sql) 吗?如果是这样,怎么做?
而且,这是推荐还是不推荐的做法,为什么还是不推荐?
提前致谢。
【问题讨论】:
mysqli::multi_query 是另一种选择。
【讨论】:
怎么做?
bar.php:
<?php `mysql < foo.sql`;
见Execution OperatorsDocs和Using mysql in Batch ModeDocs。
这是推荐的 [...] 做法,为什么 [...] ?
始终建议为工作选择合适的工具。 mysql 命令行界面非常强大、快速且经过良好测试。它可以满足您的需求。
相关: Loading .sql files from within PHP 和 Best practice: Import mySQL file in PHP; split queries。
【讨论】:
shell_exec 被禁用,反引号将不起作用。
shell_exec 是否可用,并通知用户此功能不可用和/或提供解决方法。看看这里的其他答案,我认为 PHPMyAdmin 和类似工具中应该有代码可以做你想做的事。另请参阅:Loading .sql files from within PHP
$contents = get_file_contents( 'foo.sql' );
$queries = explode( ';', $contents );
foreach( $queries as $query ) {
mysql_query( $query );
}
我不认为这样做有什么问题。
【讨论】:
; 的插入语句或cmets 将使它无用。
; 的字符串也会造成问题,也许我们可以用preg_split() 处理这个问题