background image

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 是否有那条语句是错误的。

解决这种办法有几个招:
解析 sql 语句
将每条 sql 都拆分开来执行。这样每个语句分开执行就解决了。但是这种方法多出了好几
种方法,所以不可取。
将 sqls 语句保存为文本
使用 cmd

 

执行命令 mysql…. .< sqls.sql, 然后捕获输出。这也是一种方法,但是感觉是

绕着问题走,应该还有更好的方法。
使用 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) { 
echo mysqli_error($mysqli);