PHP 程序:PHP 执行批量 mysql 语句的解决方法
本文为大家分享了 PHP 执行批量 mysql 语句的解决方法,文中列举示例说明。
当有多条 mysql 语句连起来需要执行,比如
$sqls
= “insert table a values(1,2); insert table a values(2,3);”
需要执行的话 php 中可以使用的方法有三个:
mysql_query
pdo
mysqli
三种方法当 sqls 语句没有问题的时候都是可以的。
但是
当 sql 语句是错误的时候会出现问题
第一条 sql 错误:三个方法都返回 false
第一条 sql 正确,第二条 sql 错误:mysql_query、pdo
、mysqli:query 也是返回 true。所以这个
时候你是没法判断你的 sqls 是否有那条语句是错误的。
解决这种办法有几个招:
1 解析 sql 语句
将每条 sql 都拆分开来执行。这样每个语句分开执行就解决了。但是这种方法多出了好几种
方法,所以不可取。
2 将 sqls 语句保存为文本
使用 cmd
执行命令 mysql…. .< sqls.sql, 然后捕获输出。这也是一种方法,但是感觉是绕着
问题走,应该还有更好的方法。
3 使用 mysqli::multi_query 方法
这个方法可以执行多条 sql 语句,然后使用 mysqli::next_result 来设置 sql 的偏移量,使用
mysqli::error 获取当前偏移的 sql 的错误状态
下面是第三种方法的示例代码
代码如下:
复制代码 代码如下:
$sql
= Config::get('sql');
$content
=
file_get_contents
(
$sql
);
$config
= Config::get('config')
$mysqli
= mysqli_connect(
$config
['host'],
$config
['user'],
$config
['password'],
$config
['dbname']);
$ret
=
$mysqli
->multi_query(
$content
);
if
(
$ret
=== false) {