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 相关文章推荐
一个可以删除字符串中HTML标记的PHP函数
Oct 09 PHP
解析posix与perl标准的正则表达式区别
Jun 17 PHP
浅析php header 跳转
Jun 17 PHP
PHP获取文件的MD5值并判断是否被修改的例子
Jun 19 PHP
Codeigniter中mkdir创建目录遇到权限问题和解决方法
Jul 25 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
ThinkPHP中limit()使用方法详解
Apr 19 PHP
php微信支付接口开发程序
Aug 02 PHP
基于PHP实现用户注册登录功能
Oct 14 PHP
php+ajax+json 详解及实例代码
Dec 12 PHP
利用PHP计算有多少小于当前数字的数字方法示例
Aug 26 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 神盾解密工具 ”
2014/06/20 PHP
php中spl_autoload详解
2014/10/17 PHP
php 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php while循环控制的简单实例
2016/05/30 PHP
laravel5创建service provider和facade的方法详解
2016/07/26 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
JAVASCRIPT实现的WEB页面跳转以及页面间传值方法
2010/05/13 Javascript
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
浅谈jQuery事件绑定原理
2015/01/02 Javascript
javascript实现回到顶部特效
2015/05/06 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
Js实现简单的小球运动特效
2016/02/18 Javascript
酷! 不同风格页面布局幻灯片特效js实现
2021/02/19 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
JS继承定义与使用方法简单示例
2020/02/19 Javascript
归纳整理Python中的控制流语句的知识点
2015/04/14 Python
bpython 功能强大的Python shell
2016/02/16 Python
Python原始字符串与Unicode字符串操作符用法实例分析
2017/07/22 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
使用python客户端访问impala的操作方式
2020/03/28 Python
Django框架请求生命周期实现原理
2020/11/13 Python
Python基于Webhook实现github自动化部署
2020/11/28 Python
利用css3实现的简单的鼠标悬停按钮
2014/11/04 HTML / CSS
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
Linux如何修改文件和文件夹的权限
2013/09/05 面试题
linux面试题参考答案(8)
2015/08/11 面试题
函授本科毕业自我鉴定
2013/10/09 职场文书
高中语文教学反思
2014/01/16 职场文书
销售简历自我评价
2014/01/24 职场文书
建议书的格式
2014/05/12 职场文书
格列佛游记读书笔记
2015/06/30 职场文书