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 相关文章推荐
apache php模块整合操作指南
Nov 16 PHP
smarty基础之拼接字符串的详解
Jun 18 PHP
解析php类的注册与自动加载
Jul 05 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
Jan 12 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
PDO防注入原理分析以及使用PDO的注意事项总结
Oct 23 PHP
PHP中include()与require()的区别说明
Feb 14 PHP
thinkPHP框架可添加js事件的分页类customPage.class.php完整实例
Mar 16 PHP
php 浮点数比较方法详解
May 05 PHP
Yii框架创建cronjob定时任务的方法分析
May 23 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
Oct 24 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
《OVERLORD》第四季,终于等到你!
2020/03/02 日漫
php中sql注入漏洞示例 sql注入漏洞修复
2014/01/24 PHP
详解PHP中的Traits
2015/07/29 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
javascript 设置文本框中焦点的位置
2009/11/20 Javascript
修复IE9&amp;safari 的sort方法
2011/10/21 Javascript
js写一个弹出层并锁屏效果实现代码
2012/12/07 Javascript
Javascript Ajax异步读取RSS文档具体实现
2013/12/12 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
Javascript同时声明一连串(多个)变量的方法
2017/01/23 Javascript
jQuery实现碰到边缘反弹的动画效果
2018/02/24 jQuery
vue router+vuex实现首页登录验证判断逻辑
2018/05/17 Javascript
微信小程序实现购物页面左右联动
2019/02/15 Javascript
使用Vue实现移动端左滑删除效果附源码
2019/05/16 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
Vue实现todo应用的示例
2021/02/20 Vue.js
利用python获得时间的实例说明
2013/03/25 Python
Python实现爬取逐浪小说的方法
2015/07/07 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
浅谈Python爬虫基本套路
2019/03/25 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
利用python实现汉字转拼音的2种方法
2019/08/12 Python
keras中模型训练class_weight,sample_weight区别说明
2020/05/23 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
python中的split、rsplit、splitlines用法说明
2020/10/23 Python
HTML5之WebGL 3D概述(下)—借助类库开发及框架介绍
2013/01/31 HTML / CSS
介绍一下如何利用路径遍历进行攻击及如何防范
2014/01/19 面试题
采购部长岗位职责
2014/06/13 职场文书
2014年幼儿园班级工作总结
2014/12/17 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
兼职安全员岗位职责
2015/02/15 职场文书
张丽莉观后感
2015/06/16 职场文书
JS实现数组去重的11种方法总结
2022/04/04 Javascript