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 单引号与双引号的区别
Nov 24 PHP
完美解决PHP中文乱码
Nov 26 PHP
使用PHP下载CSS文件中的图片的代码
Sep 24 PHP
PHP中对缓冲区的控制实现代码
Sep 29 PHP
php遍历文件夹和文件列表示例分享
Mar 11 PHP
让你的PHP7更快之Hugepage用法分析
May 31 PHP
php array_values 返回数组的所有值详解及实例
Nov 12 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
Aug 31 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
Nov 20 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
使用 PHP Masked Package 屏蔽敏感数据的实现方法
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模块memcache和memcached区别分析
2011/06/14 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
php array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
php生成无限栏目树
2017/03/16 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
2017/11/14 PHP
PHP论坛实现积分系统的思路代码详解
2020/06/01 PHP
javascript 读取图片文件的大小
2009/06/25 Javascript
28个JS验证函数收集
2010/03/02 Javascript
关于js内存泄露的一个好例子
2013/12/09 Javascript
jquery attr方法获取input的checked属性问题
2014/05/26 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
Bootstrap实现input控件失去焦点时验证
2016/08/04 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
使用jQuery给Table动态增加行、清空table的方法
2018/09/05 jQuery
express+vue+mongodb+session 实现注册登录功能
2018/12/06 Javascript
JavaScript时间日期操作实例小结【5个示例】
2018/12/22 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
[01:06]DOTA2小知识课堂 Ep.02 吹风竟可解梦境缠绕
2019/12/05 DOTA
Python2包含中文报错的解决方法
2018/07/09 Python
Python 加密与解密小结
2018/12/06 Python
使用python打印十行杨辉三角过程详解
2019/07/10 Python
python爬虫 线程池创建并获取文件代码实例
2019/09/28 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
Python ellipsis 的用法详解
2020/11/20 Python
斯洛伐克时尚服装网上商店:Cellbes
2016/10/20 全球购物
优秀辅导员事迹材料
2014/02/16 职场文书
师范生求职信
2014/06/14 职场文书
实验心得体会
2014/09/05 职场文书
幸福来敲门观后感
2015/06/04 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
Java无向树分析 实现最小高度树
2022/04/09 Javascript