当有多条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的错误状态

下面是第三种方法的示例代码

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$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的脚本的话,这招就非常好用了。

本文转自轩脉刃博客园博客,原文链接:http://www.cnblogs.com/yjf512/archive/2012/11/06/2757052.html,如需转载请自行联系原作者

PHP执行批量mysql语句相关推荐

  1. PHP无法执行MySQL语句,解决PHP执行批量MySQL语句的问题

    这篇文章主要为大家详细介绍了解决PHP执行批量MySQL语句的问题,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! 当有多条mysql语句连起来需要执行 ...

  2. mysql源生的sql语句_Django执行源生mysql语句实现过程解析

    1.使用extra方法 解释:结果集修改器,一种提供额外查询参数的机制 说明:依赖model模型 使用方式: 用在where后: Book.objects.filter(publisher_id=&q ...

  3. 超值干货:结合执行计划MySQL语句的11大优化策略

    背景 全球访问量最大的 20 家网站,绝大多数使用 MySQL,有两个特例的 live.com 和 bing 是微软旗下的网站.它使用的是 MSSQL,并不是他们使用不了 MySQL,而是他要支持自己 ...

  4. mac 源生安装mysql_Django执行源生mysql语句实现过程解析

    1.使用extra方法 解释:结果集修改器,一种提供额外查询参数的机制 说明:依赖model模型 使用方式: 用在where后: Book.objects.filter(publisher_id=&q ...

  5. JDBC的批量处理语句

    JDBC的批量处理语句包括下面两个方法: addBatch(String):添加需要批量处理的SQL语句或是参数: executeBatch():执行批量处理语句: 通常我们会遇到两种批量执行SQL语 ...

  6. 利用MySQL语句批量替换指定wordpress文章中的图片路径

    天花了很多时间将SAE服务器中的图片下载到本地,然后删掉,但是有一个问题就是,所有文章中的图片路径还是以前的,没有根据域名来.导致下午某些时间段图片都是无法显示的,后来想到用MySQL直接批量替换,执 ...

  7. mysql语句批量更新数据库_sql 更新批量数据库语句

    JDBC(六)批量处理sql 批量更新是分组在一起的一批更新,并以"批量"方式发送到数据库,而不是逐个发送更新. 一次发送一批更新到数据库,比一个一个发送更快,等待每个更新完成. ...

  8. mysql语句删除excel文件夹_使用Excel怎么生成批量删除、新增数据库语句

    1.打开Excel,新建一个空白的页签,在A1输入写好的数据库删除语句,DROP DATABASE `db_game_1`; . 2.在A2输入如下公式:="DROP DATABASE `d ...

  9. mysql执行非查询语句_iBatis执行非查询语句(CRUD,函数和过程)

    insert into users(USERNAME,PASSWORD,AGE,MOBILE,EMAIL) values(#userName:VARCHAR#,#password:VARCHAR#,# ...

最新文章

  1. 源码推荐:仿写映客直播 ,快速切换主题 ,星星评分控件,表格样式,可以横向移动的表格, 仿微信键盘-
  2. Prepare document for Week 2: Signaloid in Logistics
  3. 首届中国高校计算机大赛-人工智能创意赛启动,百度加盟全面赋能
  4. OpenCV 霍夫圆变换Hough Circle Transform
  5. bootstrap学习(五)代码
  6. BZOJ1179 Atm //缩点+spfa
  7. 手动挡五个档位示意图_汽车档位越多越好?听听专业回答
  8. STL(三)——next_permutation()
  9. python mssqlserver_python for MSSQLserver
  10. Android开发笔记(八十一)屏幕规格适配
  11. asp.net 页面转向 Response.Redirect, Server.Transfer, Server.Execute的区别
  12. 17.TCP/IP 详解卷1 --- TCP: 传输控制协议
  13. Lattice Diamond在线调试Reveal Analyzer使用教程
  14. md5 java_JAVA使用MD5加密解密
  15. 基于微信小程序的毕业设计题目(32)求职招聘小程序(含开题报告、任务书、中期报告、答辩PPT、论文模板)
  16. 图灵机二义性_形式语言与自动机理论教学参考书(第3版)
  17. python可以用于工业机器人编程与操作_非常实用的工业机器人编程语言有哪些?这些编程好用吗?...
  18. python快递价格查询系统
  19. CSAPP-Lab03 Attack Lab 详细解析
  20. swift 设置启动页

热门文章

  1. python代码评测结果tle_Python的备忘细节小抄
  2. php5.6 开二级域名,PHP二级域名session共享方案
  3. 10 vm 添加串口_STM32的串口通信
  4. linux远程白名单,Linux的Iptables命令实战2—设置白名单
  5. 一个软件网络连接异常_手机也能玩PC大作了,串流软件Steam Link登陆iOS App Store...
  6. androidannotations
  7. 第一章 GuassDB数据库介绍
  8. MATLAB 2018a软件安装教程
  9. eclipse远程连接hadoop_Hadoop之HDFS基本操作实验
  10. mysql表中的多对多关系表_「一对多」关系型数据库中一对多,多对一,多对多关系(详细) - seo实验室...