开发者社区> 问答> 正文

PHP:在一个mysql_query语句中进行多个SQL查询?mysql

因此,我有一个需要使用mysql_query()加载的SQL转储文件。不幸的是,不可能用它执行多个查询。

->不能假定安装了mysql命令行客户端(mysql --help)-直接加载SQL文件

->无法假定已安装mysqli扩展

/* contents of dump.sql, including comments */ DELETE FROM t3 WHERE body = 'some text; with semicolons; scattered; throughout'; DELETE FROM t2 WHERE name = 'hello'; DELETE FROM t1 WHERE id = 1; 下面的explode()无法使用,因为某些转储内容的值包含分号。

$sql = explode(';', file_get_contents('dump.sql')); foreach ($sql as $key => $val) { mysql_query($val); } 在不修改转储文件的情况下加载SQL的最佳方法是什么?

展开
收起
保持可爱mmm 2020-05-17 18:15:01 800 0
1 条回答
写回答
取消 提交回答
  • 您有更多的问题案例,而不仅仅是字符串中的分号。

    无法执行的脚本内置命令mysql_query(),例如USE。 不以分号结尾的语句,例如DELIMITER。 包含分号但不包含引号的语句,例如CREATE PROCEDURE。 我不知道在不使用mysql命令行客户端的情况下处理此任务的简便方法。我意识到您说您不能依靠该客户端,但是如果没有该客户端,则需要大量的PHP代码来解析脚本并适当地执行语句。

    您也许可以在phpMyAdmin产品中找到这样的代码。但是,该产品是根据GPL许可的,因此,如果您使用任何代码,则还必须根据GPL许可自己的项目。来源:stack overflow

    2020-05-17 18:15:40
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
One Box: 解读事务与分析一体化数据库 HybridDB for MySQL 立即下载
One Box:解读事务与分析一体化数据库HybridDB for MySQL 立即下载
如何支撑HTAP场景-HybridDB for MySQL系统架构和技术演进 立即下载

相关镜像