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 相关文章推荐
PHP 内存缓存加速功能memcached安装与用法
Sep 03 PHP
discuz的php防止sql注入函数
Jan 17 PHP
比较strtr, str_replace和preg_replace三个函数的效率
Jun 26 PHP
获取URL文件名后缀
Oct 24 PHP
使用array_map简单搞定PHP删除文件、删除目录
Oct 29 PHP
php读取csc文件并输出
May 21 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
Oct 20 PHP
PHP中PDO的事务处理分析
Apr 07 PHP
Docker配置PHP开发环境教程
Dec 21 PHP
PHP针对伪静态的注入总结【附asp与Python相关代码】
Aug 01 PHP
php支付宝APP支付功能
Jul 29 PHP
PHP的Trait机制原理与用法分析
Oct 18 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
php下尝试使用GraphicsMagick的缩略图功能
2011/01/01 PHP
PHP微信API接口类
2016/08/22 PHP
php操作xml并将其插入数据库的实现方法
2016/09/08 PHP
(跨浏览器基础事件/浏览器检测/判断浏览器)经验代码分享
2013/01/24 Javascript
jquery链式操作的正确使用方法
2014/01/06 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
JavaScript中闭包的写法和作用详解
2016/06/29 Javascript
JavaScript的字符串方法汇总
2016/07/31 Javascript
基于Javascript实现的不重复ID的生成器
2016/12/25 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
vue项目中公用footer组件底部位置的适配问题
2018/05/10 Javascript
微信小程序input框中加入小图标的实现方法
2018/06/19 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
学习jQuery中的noConflict()用法
2018/09/28 jQuery
javascript严格模式详解(含严格模式与非严格模式的区别)
2019/11/12 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python序列之list和tuple常用方法以及注意事项
2015/01/09 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
GDAL 矢量属性数据修改方式(python)
2020/03/10 Python
python新式类和经典类的区别实例分析
2020/03/23 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
初探CSS3中的calc()功能
2015/07/14 HTML / CSS
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
荷兰演唱会和体育比赛订票网站:viagogo荷兰
2018/04/08 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
物流仓管员工作职责
2014/01/06 职场文书
校长先进事迹材料
2014/02/01 职场文书
标准化管理实施方案
2014/02/25 职场文书
公职人员索取回扣检举信
2014/04/04 职场文书
师德师风剖析材料
2014/09/30 职场文书
派出所正风肃纪剖析材料
2014/10/10 职场文书
模范教师材料大全
2014/12/16 职场文书
部门经理迟到检讨书
2015/02/16 职场文书
Python通用验证码识别OCR库ddddocr的安装使用教程
2022/07/07 Python