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+DBM的同学录程序(2)
Oct 09 PHP
PHP常用特殊运算符号和函数总结(php新手入门必看)
Feb 02 PHP
对淘宝URL中ID提取的PHP代码
Sep 01 PHP
保存到桌面、设为桌面且带图标的PHP代码
Nov 19 PHP
phpmyadmin配置文件现在需要绝密的短密码(blowfish_secret)的2种解决方法
May 07 PHP
php无限极分类递归排序实现方法
Nov 11 PHP
SESSION存放在数据库用法实例
Aug 08 PHP
如何解决PHP无法实现多线程的问题
Sep 25 PHP
Ubuntu上安装yaf扩展的方法
Jan 29 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
php校验公钥是否可用的实例方法
Sep 17 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 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/11/25 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
php采用curl访问域名返回405 method not allowed提示的解决方法
2014/06/26 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
JavaScript 开发中规范性的一点感想
2009/06/23 Javascript
JavaScript动态插入script的基本思路及实现函数
2013/11/11 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
jQuery中noConflict()用法实例分析
2015/02/08 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
jQuery获得子元素个数的方法
2015/04/14 Javascript
浅谈jQuery中事情的动态绑定
2017/02/12 Javascript
Bootstrap table简单使用总结
2017/02/15 Javascript
js遍历json对象所有key及根据动态key获取值的方法(必看)
2017/03/09 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
[原创]jquery判断元素内容是否为空的方法
2018/05/04 jQuery
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
Vue插件从封装到发布的完整步骤记录
2019/02/28 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
JS实现动态添加外部js、css到head标签的方法
2019/06/05 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
[02:11]2014DOTA2 TI专访VG战队Fenrir:队伍气氛良好
2014/07/11 DOTA
[01:18:33]Secret vs VGJ.S Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
Python判断一个三位数是否为水仙花数的示例
2018/11/13 Python
浅谈pandas筛选出表中满足另一个表所有条件的数据方法
2019/02/08 Python
Python+PyQT5的子线程更新UI界面的实例
2019/06/14 Python
CSS3实现的渐变幻灯片效果
2020/12/07 HTML / CSS
CSS3 实现的火焰动画
2020/12/07 HTML / CSS
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
init进程的作用
2012/04/12 面试题
教师自荐信范文
2013/12/09 职场文书
二年级体育教学反思
2014/01/15 职场文书
鸿星尔克广告词
2014/03/21 职场文书
Vue的列表之渲染,排序,过滤详解
2022/02/24 Vue.js