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 相关文章推荐
mysql5的sql文件导入到mysql4的方法
Oct 19 PHP
ecshop 订单确认中显示省市地址信息的方法
Mar 15 PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 PHP
用PHP和Shell写Hadoop的MapReduce程序
Apr 15 PHP
php的curl封装类用法实例
Nov 07 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
学习php设计模式 php实现访问者模式(Visitor)
Dec 07 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
php-fpm服务启动脚本的方法
Apr 27 PHP
php输出控制函数和输出函数生成静态页面
Jun 27 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函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP常用正则表达式集锦
2014/08/17 PHP
php采用curl模仿登录人人网发布动态的方法
2014/11/07 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
Yii实现显示静态页的方法
2016/04/25 PHP
CI框架入门之MVC简单示例
2016/11/21 PHP
laravel5表单唯一验证的实例代码
2019/09/30 PHP
读jQuery之十 事件模块概述
2011/06/27 Javascript
原生javascript图片自动或手动切换示例附演示源码
2013/09/04 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
如何在node的express中使用socket.io
2014/12/15 Javascript
Nodejs Express4.x开发框架随手笔记
2015/11/23 NodeJs
js实现碰撞检测特效代码分享
2016/10/16 Javascript
JS实现控制图片显示大小的方法【图片等比例缩放功能】
2017/02/18 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
2020/04/14 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
用Python实现换行符转换的脚本的教程
2015/04/16 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
python+Django+apache的配置方法详解
2016/06/01 Python
python发送邮件功能实现代码
2016/07/15 Python
Python中selenium实现文件上传所有方法整理总结
2017/04/01 Python
Python实现导出数据生成excel报表的方法示例
2017/07/12 Python
Python 带有参数的装饰器实例代码详解
2018/12/06 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
Python实现最常见加密方式详解
2019/07/13 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
Nike加拿大官网:Nike.com (CA)
2019/04/09 全球购物
趣味游戏活动方案
2014/02/07 职场文书
元旦联欢会主持词
2014/03/26 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
门面房租房协议书
2014/12/01 职场文书
出租车拒载检讨书
2015/01/28 职场文书
2015年党建工作总结
2015/03/30 职场文书
win10电脑老是死机怎么办?win10系统老是死机的解决方法
2022/08/05 数码科技