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 相关文章推荐
通过ODBC连接的SQL SERVER实例
Oct 09 PHP
一步一步学习PHP(2)――PHP类型
Feb 15 PHP
php处理json时中文问题的解决方法
Apr 12 PHP
不重新编译PHP为php增加openssl模块的方法
Jun 14 PHP
深入PHP magic quotes的详解
Jun 17 PHP
浅谈php优化需要注意的地方
Nov 27 PHP
以实例全面讲解PHP中多进程编程的相关函数的使用
Aug 18 PHP
PHP实现微信发红包程序
Aug 24 PHP
PHP使用GD库输出汉字的方法【测试可用】
Nov 10 PHP
Zend Framework基于Command命令行建立ZF项目的方法
Feb 18 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
PHP实时统计中文字数和区别
Feb 28 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 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
php判断手机访问还是电脑访问示例分享
2014/01/20 PHP
php防止站外远程提交表单的方法
2014/10/20 PHP
PHP比你想象的好得多
2014/11/27 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
PHP上传图片时判断上传文件是否为可用图片的方法
2016/10/20 PHP
js对数字的格式化使用说明
2011/01/12 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
轻松创建nodejs服务器(8):非阻塞是如何实现的
2014/12/18 NodeJs
javascript数组去重的六种方法汇总
2015/08/16 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
bootstrap suggest搜索建议插件使用详解
2017/03/25 Javascript
addEventListener()与removeEventListener()解析
2017/04/20 Javascript
BootStrap表单控件之文本域textarea
2017/05/23 Javascript
AngularJS中使用ngModal模态框实例
2017/05/27 Javascript
详解关于Vue2.0路由开启keep-alive时需要注意的地方
2018/09/18 Javascript
Vue3.0结合bootstrap创建多页面应用
2019/05/28 Javascript
[01:18:31]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第一场 1月10日
2021/03/11 DOTA
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
Python中防止sql注入的方法详解
2017/02/25 Python
Python实现霍夫圆和椭圆变换代码详解
2018/01/12 Python
Python中面向对象你应该知道的一下知识
2019/07/10 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
初一家长会邀请函
2014/01/31 职场文书
北体毕业生求职信
2014/02/28 职场文书
联欢晚会主持词
2014/03/25 职场文书
开学寄语大全
2014/04/08 职场文书
演讲稿的写法
2014/05/19 职场文书
最常使用的求职信
2014/05/25 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
关于考试抄袭的检讨书
2019/11/02 职场文书
Pytorch中Softmax与LogSigmoid的对比分析
2021/06/05 Python