PHP:一个mysql_query语句中的多个SQL查询

所以我有一个sql转储文件需要使用 mysql_query()加载.不幸的是,它不可能执行多个查询.

– >不能假定已经安装了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的最佳方式是什么?

你有更多的问题案例,而不仅仅是字符串中的分号.

>脚本builtin不能由MysqL_query()执行的命令,如USE.
>没有以分号结束的语句,如DELIMITER.
>包含分号但不在引号内的语句,如CREATE PROCEDURE.

我不知道一个简单的方法来处理这个任务,而不会弹出MysqL命令行客户端.我意识到你说你不能依赖该客户端存在,但没有客户端,您需要大量的PHP代码来解析脚本并适当地执行语句.

您可能可以在phpMyAdmin产品中找到这样的代码.但是,该产品是根据GPL许可的,所以如果您使用任何代码,您还必须根据GPL许可您自己的项目.

另请参阅我对这些相关问题的答案:

> Running MySQL *.sql files in PHP
> Loading .sql files from within PHP
> is it possible to call a sql script from a stored procedure in another sql script?

相关文章

Hessian开源的远程通讯,采用二进制 RPC的协议,基于 HTTP 传输。可以实现PHP调用Java,Python,C#等多语...
初识Mongodb的一些总结,在Mac Os X下真实搭建mongodb环境,以及分享个Mongodb管理工具,学习期间一些总结...
边看边操作,这样才能记得牢,实践是检验真理的唯一标准.光看不练假把式,光练不看傻把式,边看边练真把式....
在php中,结果输出一共有两种方式:echo和print,下面将对两种方式做一个比较。 echo与print的区别: (...
在安装好wampServer后,一直没有使用phpMyAdmin,今天用了一下,phpMyAdmin显示错误:The mbstring exte...
变量是用于存储数据的容器,与代数相似,可以给变量赋予某个确定的值(例如:$x=3)或者是赋予其它的变...