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 相关文章推荐
ZF等常用php框架中存在的问题
Jan 10 PHP
php whois查询API制作方法
Jun 23 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
smarty简单入门实例
Nov 28 PHP
8个PHP数组面试题
Jun 23 PHP
php for 循环使用的简单实例
Jun 02 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
Yii2――使用数据库操作汇总(增删查改、事务)
Dec 19 PHP
Laravel5.5新特性之友好报错以及展示详解
Aug 13 PHP
php使用curl获取header检测开启GZip压缩的方法
Aug 15 PHP
PHP使用SMTP邮件服务器发送邮件示例
Aug 28 PHP
Laravel5.5 手动分页和自定义分页样式的简单实现
Oct 15 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编写PDF文档生成器
2006/10/09 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
php中session退出登陆问题
2014/02/27 PHP
php+ajax制作无刷新留言板
2015/10/27 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
JavaScript作用域与作用域链深入解析
2013/12/06 Javascript
Javascript监视变量变化的方法
2015/06/09 Javascript
JavaScript性能优化总结之加载与执行
2016/08/11 Javascript
Bootstrap精简教程中秋大放送
2016/09/15 Javascript
Javascript动画效果(3)
2016/10/11 Javascript
一个极为简单的requirejs实现方法
2016/10/20 Javascript
webpack常用配置项配置文件介绍
2016/11/07 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
OkHttp踩坑随笔为何 response.body().string() 只能调用一次
2018/01/08 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
2018/08/13 Javascript
Vue登录注册并保持登录状态的方法
2018/08/17 Javascript
详解ES6系列之私有变量的实现
2018/11/21 Javascript
vue移动端模态框(可传参)的实现
2019/11/20 Javascript
JavaScript原型继承和原型链原理详解
2020/02/04 Javascript
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
探究数组排序提升Python程序的循环的运行效率的原因
2015/04/01 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
python 哈希表实现简单python字典代码实例
2019/09/27 Python
Selenium 滚动页面至元素可见的方法
2020/03/18 Python
Python调用.net动态库实现过程解析
2020/06/05 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
俄罗斯设计师家具购物网站:The Furnish
2019/12/01 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
解决方案设计综合面试题
2015/08/31 面试题
会计专业毕业生推荐信
2013/11/05 职场文书
农村改厕实施方案
2014/03/22 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
高中诗歌鉴赏教学反思
2016/02/16 职场文书