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 文件上传代码(限制jpg文件)
Jan 05 PHP
php批量缩放图片的代码[ini参数控制]
Feb 11 PHP
Window 7/XP 安装Apache 2.4与PHP 5.4 的过程详解
Jun 02 PHP
IIS安装Apache伪静态插件的具体操作图文
Jul 01 PHP
php解析url的三个示例
Jan 20 PHP
php微信支付接口开发程序
Aug 02 PHP
PHP7新增运算符用法实例分析
Sep 26 PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 PHP
PHP微信开发之微信录音临时转永久存储
Jan 26 PHP
php打开本地exe程序,js打开本地exe应用程序,并传递相关参数方法
Feb 06 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
PHP开发实现快递查询功能详解
Apr 08 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带密码功能并下载远程文件保存本地指定目录 修改加强版
2010/05/16 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
浅析php过滤html字符串,防止SQL注入的方法
2013/07/02 PHP
如何写php守护进程(Daemon)
2015/12/30 PHP
php数值转换时间及时间转换数值用法示例
2017/05/18 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
jquery的键盘事件修改代码
2011/02/24 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
JavaScript的Ext JS框架中的GridPanel组件使用指南
2016/05/21 Javascript
浅谈JS如何实现真正的对象常量
2017/06/25 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
Node.js创建Web、TCP服务器
2017/12/05 Javascript
jQuery插件Validation表单验证详解
2018/05/26 jQuery
JS解析后台返回的JSON格式数据实例
2018/08/06 Javascript
vue-cli3.0配置及使用注意事项详解
2018/09/05 Javascript
Vuex 快速入门(简单易懂)
2018/09/20 Javascript
详解json串反转义(消除反斜杠)
2019/08/12 Javascript
webpack是如何实现模块化加载的方法
2019/11/06 Javascript
js绘制一条直线并旋转45度
2020/08/21 Javascript
python使用wmi模块获取windows下的系统信息 监控系统
2015/10/27 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
简单的Python调度器Schedule详解
2019/08/30 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
python爬取豆瓣电影排行榜(requests)的示例代码
2021/02/18 Python
HelloFresh澳大利亚:订购你的美味食品盒、健康餐食
2018/03/28 全球购物
幼儿教师研修感言
2014/02/12 职场文书
2014领导班子四风问题对照检查材料思想汇报
2014/09/21 职场文书
房产公证书
2015/01/23 职场文书
2015年九一八事变纪念活动实施方案
2015/05/06 职场文书
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers