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 相关文章推荐
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
php 将bmp图片转为jpg等其他任意格式的图片
Jun 21 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
ThinkPHP自动填充实现无限级分类的方法
Aug 22 PHP
mod_php、FastCGI、PHP-FPM等PHP运行方式对比
Jul 02 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
Dec 08 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
Yii2中cookie用法示例分析
Jul 18 PHP
php版微信发红包接口用法示例
Sep 23 PHP
详谈symfony window下的安装 安装时候出现的问题以及解决方法
Sep 28 PHP
Laravel框架实现超简单的分页效果示例
Feb 08 PHP
PHP封装请求类实例分析【基于Yii框架】
Oct 17 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中的正规表达式(一)
2006/10/09 PHP
linux下 C语言对 php 扩展
2008/12/14 PHP
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
php中的Base62类(适用于数值转字符串)
2013/08/12 PHP
PHP实现无限级分类(不使用递归)
2015/10/22 PHP
PHP基于PDO调用sqlserver存储过程通用方法【基于Yii框架】
2017/10/07 PHP
JSON PHP中,Json字符串反序列化成对象/数组的方法
2018/05/31 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
xml 封装与解析(javascript和C#中)
2009/07/26 Javascript
JS解析json数据并将json字符串转化为数组的实现方法
2012/12/25 Javascript
简单的Jquery遮罩层代码实例
2013/11/14 Javascript
Javascript生成全局唯一标识符(GUID,UUID)的方法
2016/02/27 Javascript
深入解析JavaScript中函数的Currying柯里化
2016/03/19 Javascript
jQuery中的基本选择器用法学习教程
2016/04/14 Javascript
JavaScript程序中的流程控制语句用法总结
2016/05/23 Javascript
底部悬浮通栏可以关闭广告位的实现方法
2016/06/01 Javascript
微信小程序 开发工具快捷键整理
2016/10/31 Javascript
jQuery内存泄露解决办法
2016/12/13 Javascript
判断jQuery是否加载完成,没完成继续判断的解决方法
2017/12/06 jQuery
JS同步、异步、延迟加载的方法
2018/05/05 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
vue-router的HTML5 History 模式设置
2018/09/08 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
基于vue+axios+lrz.js微信端图片压缩上传方法
2019/06/25 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
[02:45]2016年中国刀塔全程回顾,完美“圣”典即将上演
2016/12/15 DOTA
Django admin实现图书管理系统菜鸟级教程完整实例
2017/12/12 Python
对Python3使运行暂停的方法详解
2019/02/18 Python
python支付宝支付示例详解
2019/08/22 Python
人力资源专业推荐信
2013/11/29 职场文书
2014年司机工作总结
2014/11/21 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
高中家长意见怎么写
2015/06/03 职场文书
2016年情人节问候语
2015/11/11 职场文书