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 相关文章推荐
MySQL数据源表结构图示
Jun 05 PHP
php和js如何通过json互相传递数据相关问题探讨
Feb 26 PHP
浅析SVN常见问题及解决方法
Jun 21 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
Jun 27 PHP
thinkphp在模型中自动完成session赋值示例代码
Sep 09 PHP
php的dl函数用法实例
Nov 06 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
PHP中header函数的用法及其注意事项详解
Jun 13 PHP
php实现等比例不失真缩放上传图片的方法
Nov 14 PHP
php微信公众平台交互与接口详解
Nov 28 PHP
Thinkphp结合ajaxFileUpload实现异步图片传输示例
Mar 13 PHP
你真的了解PHP中的引用符号(&)吗
May 12 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
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
清空上传控件input file的值
2010/07/03 Javascript
javascript中的继承实例代码
2011/04/27 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
jquery对dom节点的操作【推荐】
2016/04/15 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
jQuery zTree搜索-关键字查询 递归无限层功能实现代码
2018/01/25 jQuery
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
Vue解决echart在element的tab切换时显示不正确问题
2020/08/03 Javascript
vue项目中播放rtmp视频文件流的方法
2020/09/17 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
浅析Python中的多重继承
2015/04/28 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
Python模拟脉冲星伪信号频率实例代码
2018/01/03 Python
Python WSGI的深入理解
2018/08/01 Python
pytorch GAN生成对抗网络实例
2020/01/10 Python
Python实现常见的几种加密算法(MD5,SHA-1,HMAC,DES/AES,RSA和ECC)
2020/05/09 Python
Python多线程threading创建及使用方法解析
2020/06/17 Python
HTML中fieldset标签概述及使用方法
2013/02/01 HTML / CSS
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
如何在存储过程中使用Loop
2016/01/05 面试题
简短的公司员工自我评价分享
2013/11/13 职场文书
人事文员岗位职责
2014/02/16 职场文书
小学运动会班级口号
2014/06/09 职场文书
银行转正自我鉴定
2014/09/29 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
结婚仪式主持词
2015/06/29 职场文书
交通事故责任认定书
2015/08/06 职场文书
环保建议书范文
2015/09/14 职场文书
Python 类,对象,数据分类,函数参数传递详解
2021/09/25 Python