php使用PDO事务配合表格读取大量数据插入操作实现方法


Posted in PHP onFebruary 16, 2017

本文实例讲述了php使用PDO事务配合表格读取大量数据插入操作实现方法。分享给大家供大家参考,具体如下:

在处理大量数据的时候,或者同时对几个表操作,而这几个表的操作要求,要么都成功,要么都失败的时候,就需要用到事物,而PDO中提供的事物,一般可以满足需求。

关于事务的具体讲解,https://3water.com/article/105744.htm

本篇文章,只涉及一个小例子。

在向数据库导入一个表格的时候,难免excel文件中存在部分错误,如果用常规方法,将会导致,一部分插入了数据库,一部分没有插入,会带了很大的不便。

<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL ^ E_NOTICE);
require_once 'excel_reader2.php';//导入excel_reader文件
$data = new Spreadsheet_Excel_Reader();//创建对象
$data->setOutputEncoding('UTF-8');//设置编码格式
$data->read("example.xls");//读取excel文档*/
echo $hang=$data->sheets[0]['numRows']."行<br>";//读出一共几行
echo $lie=$data->sheets[0]['numCols']."列<br>";//读出一共几列
$dbms='mysql';
$dbname='biaoge';
$user='root';
$pwd='123456';
$host='localhost';
$dsn="$dbms:host=$host;dbname=$dbname";
try {
  $pdo = new PDO($dsn, $user, $pwd);
  $pdo->exec("SET NAMES UTF8");//设置数据库编码
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//异常模式
  $pdo->beginTransaction();//开启事物
  $query = "INSERT INTO test SET id1=?,id2=?,id3=?,id4=?,id5=?";//预编译插入语句
  $result=$pdo->prepare($query);
//  $result->execute(array("111","222","333","444","555"));
//  $pdo->commit();
  for ($i = 1; $i <= $hang; $i++) {
    $id1=$data->sheets[0]['cells'][$i][1];
    $id2=$data->sheets[0]['cells'][$i][2];
    $id3=$data->sheets[0]['cells'][$i][3];
    $id4=$data->sheets[0]['cells'][$i][4];
    $id5=$data->sheets[0]['cells'][$i][5];
    $result->bindParam(1,$id1);//绑定参数
    $result->bindParam(2,$id2);//绑定参数
    $result->bindParam(3,$id3);//绑定参数
    $result->bindParam(4,$id4);//绑定参数
    $result->bindParam(5,$id5);//绑定参数
    echo $result->execute();//执行插入操作
  }
  $pdo->commit();//执行事物的提交操作*/
}catch (PDOException $e){
  die("Error!: ".$e->getMessage().'<br>');
  $pdo->rollBack();//执行事物的回滚操作
}

补充:

异常模式将会创建一个PDOException,并设置errorCode属性,它可以将执行代码封装到一个try{}catch{}语句块中。未捕获的异常将会导致脚本中断,并显示堆栈跟踪让用户了解是哪里出现了问题。
除此之外:

警告模式会产生一个PHP警告,并设置errorCode属性。如果设置的是警告模式,那么除非明确的检查错误代码,否则程序将继续按照其方式运行。

在默认模式中设置PDOStatement对象的errorCode属性,但不进行其他任何操作。

PHP 相关文章推荐
基于文本的访客签到簿
Oct 09 PHP
PHP图片上传类带图片显示
Nov 25 PHP
用php实现像JSP,ASP里Application那样的全局变量
Jan 12 PHP
PHP令牌 Token改进版
Jul 18 PHP
一步一步学习PHP(7) php 字符串相关应用
Mar 05 PHP
PHP输出日历表代码实例
Mar 27 PHP
PHP中PDO连接数据库中各种DNS设置方法小结
May 13 PHP
利用php实现一周之内自动登录存储机制(cookie、session、localStorage)
Oct 31 PHP
PHP中STDCLASS用法实例分析
Nov 11 PHP
php微信公众号开发之秒杀
Oct 20 PHP
Laravel 微信小程序后端实现用户登录的示例代码
Nov 26 PHP
tp5.1 框架路由操作-URL生成实例分析
May 26 PHP
php的PDO事务处理机制实例分析
Feb 16 #PHP
php使用include 和require引入文件的区别
Feb 16 #PHP
Yii2实现UploadedFile上传文件示例
Feb 15 #PHP
使用PHPMailer发送邮件实例
Feb 15 #PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 #PHP
php使用GD2绘制几何图形示例
Feb 15 #PHP
php使用Jpgraph创建柱状图展示年度收支表效果示例
Feb 15 #PHP
You might like
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
使用PHP导出Redis数据到另一个Redis中的代码
2014/03/12 PHP
php使用date和strtotime函数输出指定日期的方法
2014/11/14 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
PHP Trait功能与用法实例分析
2020/06/03 PHP
JS 判断undefined的实现代码
2009/11/26 Javascript
JQuery 选项卡效果(JS与HTML的分离)
2010/04/01 Javascript
php中给js数组赋值方法
2014/03/10 Javascript
使用Nodejs开发微信公众号后台服务实例
2014/09/03 NodeJs
JS弹出可拖拽可关闭的div层完整实例
2015/02/13 Javascript
javascript实现博客园页面右下角返回顶部按钮
2015/02/22 Javascript
javascript限制文本框输入值类型的方法
2015/05/07 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
JavaScript使用forEach()与jQuery使用each遍历数组时return false 的区别
2016/08/26 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
2016/12/02 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
JavaScript正则表达式校验与递归函数实际应用实例解析
2017/08/04 Javascript
还不懂递归?读完这篇文章保证你会懂
2018/07/29 Javascript
jQuery实现网页拼图游戏
2020/04/22 jQuery
js实现盒子移动动画效果
2020/08/09 Javascript
Python编码时应该注意的几个情况
2013/03/04 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
Python实现决策树C4.5算法的示例
2018/05/30 Python
Python OpenCV实现鼠标画框效果
2020/08/19 Python
django中的图片验证码功能
2019/09/18 Python
Python GUI编程学习笔记之tkinter界面布局显示详解
2020/03/30 Python
python如何编写win程序
2020/06/08 Python
详解Pycharm第三方库的安装及使用方法
2020/12/29 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
银行出纳岗位职责
2013/11/25 职场文书
关于孝道的演讲稿
2014/05/21 职场文书
企业承诺书怎么写
2014/05/24 职场文书
教师网络培训心得体会
2016/01/09 职场文书
技术入股合作协议书
2016/03/21 职场文书
vue中三级导航的菜单权限控制
2021/03/31 Vue.js