PHP执行批量mysql语句的解决方法


Posted in PHP onMay 02, 2013

当有多条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) { 
    echo mysqli_error($mysqli); 
} 
while (mysqli_more_results($mysqli)) { 
    if (mysqli_next_result($mysqli) === false) { 
        echo mysqli_error($mysqli); 
        echo "\r\n"; 
        break; 
    } 
} 
$mysqli->close();

这样的话当sqls语句中任意一条有错误的话,程序就会跳出这个错误。

如果你要编写初始化mysql的脚本的话,这招就非常好用了。

 

PHP 相关文章推荐
PHP 模拟$_PUT实现代码
Mar 15 PHP
基于PHP遍历数组的方法汇总分析
Jun 08 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
linux下编译安装memcached服务
Aug 03 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
Laravel手动分页实现方法详解
Oct 09 PHP
Laravel学习教程之从入口到输出过程详解
Aug 27 PHP
Laravel下生成验证码的类
Nov 15 PHP
PHP命名空间与自动加载类详解
Sep 04 PHP
thinkphp5使用无限极分类
Feb 18 PHP
php 中的信号处理操作实例详解
Mar 04 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 PHP
PHP闭包(Closure)使用详解
May 02 #PHP
PHP5中Cookie与 Session使用详解
Apr 30 #PHP
PHP容易忘记的知识点分享
Apr 30 #PHP
基于curl数据采集之正则处理函数get_matches的使用
Apr 28 #PHP
基于curl数据采集之单页面并行采集函数get_htmls的使用
Apr 28 #PHP
基于curl数据采集之单页面采集函数get_html的使用
Apr 28 #PHP
基于php上传图片重命名的6种解决方法的详细介绍
Apr 28 #PHP
You might like
PHP 操作文件的一些FAQ总结
2009/02/12 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
php实现求相对时间函数
2015/06/15 PHP
为你总结一些php信息函数
2015/10/21 PHP
超棒的javascript页面顶部卷动广告效果
2007/12/01 Javascript
使用js Math.random()函数生成n到m间的随机数字
2014/10/09 Javascript
浅谈javascript实现八大排序
2015/04/27 Javascript
超级给力的JavaScript的React框架入门教程
2015/07/02 Javascript
jQuery简单实现input文本框内灰色提示文本效果的方法
2015/12/02 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
2017/01/20 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
Vue Element UI + OSS实现上传文件功能
2019/07/31 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
layui 根据后台数据动态创建下拉框并同时默认选中的实例
2019/09/02 Javascript
taro小程序添加骨架屏的实现代码
2019/11/15 Javascript
jQuery实现放大镜案例
2020/10/19 jQuery
详细解析Python当中的数据类型和变量
2015/04/25 Python
python中闭包Closure函数作为返回值的方法示例
2017/12/17 Python
python3.4.3下逐行读入txt文本并去重的方法
2018/04/29 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Django CBV与FBV原理及实例详解
2019/08/12 Python
Python爬虫之Selenium设置元素等待的方法
2020/12/04 Python
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
车间统计员岗位职责
2014/01/05 职场文书
大学生写自荐信的技巧
2014/01/08 职场文书
3分钟演讲稿
2014/04/30 职场文书
第二课堂活动总结
2014/05/07 职场文书
电力培训心得体会
2014/09/02 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
后备干部推荐材料
2014/12/24 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
健身房被搭讪?用python写了个小米计时器助人为乐
2021/06/08 Python
详解Java实践之建造者模式
2021/06/18 Java/Android
swagger如何返回map字段注释
2021/07/03 Java/Android