background image

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) {