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+mysql+php+ssl服务器之完全安装攻略
Sep 05 PHP
Smarty安装配置方法
Apr 10 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
php 图片上添加透明度渐变的效果
Jun 29 PHP
PHP5权威编程阅读学习笔记 附电子书下载
Jul 05 PHP
php json与xml序列化/反序列化
Oct 28 PHP
php发送post请求函数分享
Mar 06 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
将PHP的session数据存储到数据库中的代码实例
Jun 24 PHP
PHP里面把16进制的图片数据显示在html的img标签上(实现方法)
May 02 PHP
在thinkphp5.0路径中实现去除index.php的方式
Oct 16 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 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实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
使用php实现网站验证码功能【推荐】
2017/02/09 PHP
php解决安全问题的方法实例
2019/09/19 PHP
javascript 验证日期的函数
2010/03/18 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
关于js中for in的缺陷浅析
2013/12/02 Javascript
jquery组件使用中遇到的问题整理及解决
2014/02/21 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
Node.js中使用socket创建私聊和公聊聊天室
2015/11/19 Javascript
jQuery div拖拽用法实例
2016/01/14 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
jQuery模拟爆炸倒计时功能实例代码
2017/08/21 jQuery
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
[56:00]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs TNC 第二场
2018/04/10 DOTA
Python中异常重试的解决方案详解
2017/05/05 Python
Python正则表达式完全指南
2017/05/25 Python
Python自定义线程类简单示例
2018/03/23 Python
Django实现跨域的2种方法
2019/07/31 Python
python图的深度优先和广度优先算法实例分析
2019/10/26 Python
文件上传服务器-jupyter 中python解压及压缩方式
2020/04/22 Python
css3实例教程 一款纯css3实现的发光屏幕旋转特效
2014/12/07 HTML / CSS
英国最大的自有市场,比亚马逊便宜:Flubit
2019/03/19 全球购物
意大利中国电子产品购物网站:Geekmall.com
2019/09/30 全球购物
我爱家乡演讲稿
2014/09/12 职场文书
教师对照四风自我剖析材料
2014/09/30 职场文书
2014年教研室工作总结
2014/12/06 职场文书
自我推荐信格式模板
2015/03/24 职场文书
专家推荐信范文
2015/03/26 职场文书
培训计划通知
2015/07/15 职场文书
安全教育主题班会总结
2015/08/14 职场文书
Python 操作pdf pdfplumber读取PDF写入Exce
2022/08/14 Python
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers