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 相关文章推荐
NOD32 v2.70.32 简体中文封装版 提供下载了
Feb 27 PHP
php面向对象全攻略 (九)访问类型
Sep 30 PHP
php strcmp使用说明
Apr 22 PHP
php 问卷调查结果统计
Oct 08 PHP
PHPExcel导出2003和2007的excel文档功能示例
Jan 04 PHP
IIS 7.5 asp Session超时时间设置方法
Apr 17 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
Aug 30 PHP
PHP设计模式之单例模式原理与实现方法分析
Apr 25 PHP
PHP合并两个或多个数组的方法
Jan 20 PHP
Yii框架自定义数据库操作组件示例
Nov 11 PHP
PHP实现抽奖功能实例代码
Jun 30 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
西德产收音机
2021/03/01 无线电
PHP模拟登陆163邮箱发邮件及获取通讯录列表的方法
2015/03/07 PHP
WordPress开发中自定义菜单的相关PHP函数使用简介
2016/01/05 PHP
jquery.validate使用攻略 第三部
2010/07/01 Javascript
js页面滚动时层智能浮动定位实现(jQuery/MooTools)
2011/08/23 Javascript
jquery限制输入字数,并提示剩余字数实现代码
2012/12/24 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
Javascript中的arguments对象
2016/06/20 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
JS中作用域和变量提升(hoisting)的深入理解
2016/10/31 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
JS返回顶部实例代码
2020/08/09 Javascript
关于vuejs中v-if和v-show的区别及v-show不起作用问题
2018/03/26 Javascript
新手简单了解vue
2019/05/29 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
js实现全选和全不选功能
2020/07/28 Javascript
VUE实时监听元素距离顶部高度的操作
2020/07/29 Javascript
JavaScript实现拖动对话框效果的实现代码
2020/10/12 Javascript
Python调用C语言开发的共享库方法实例
2015/03/18 Python
学习python类方法与对象方法
2016/03/15 Python
Python基于回溯法子集树模板解决数字组合问题实例
2017/09/02 Python
Python subprocess模块详细解读
2018/01/29 Python
TensorFLow用Saver保存和恢复变量
2018/03/10 Python
Python实现将Excel转换成xml的方法示例
2018/08/25 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
python使用BeautifulSoup与正则表达式爬取时光网不同地区top100电影并对比
2019/04/15 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
Python生成指定数量的优惠码实操内容
2019/06/18 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
详解Python中openpyxl模块基本用法
2021/02/23 Python
英国在线房屋中介网站:Yopa
2018/01/09 全球购物
《故乡》教学反思
2014/04/10 职场文书
应届生求职自荐信
2014/07/04 职场文书
国家助学贷款承诺书
2015/04/30 职场文书