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.MVC的模板标签系统(五)
Sep 05 PHP
ftp类(myftp.php)
Oct 09 PHP
eWebEditor v3.8 商业完整版 (PHP)
Dec 06 PHP
PHP 日志缩略名的创建函数代码
May 26 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
PHP中::、-&amp;gt;、self、$this几种操作符的区别介绍
Apr 24 PHP
php防止伪造数据从地址栏URL提交的方法
Aug 24 PHP
php实现给图片加灰色半透明效果的方法
Oct 20 PHP
微信公众平台之快递查询功能用法实例
Apr 14 PHP
PHP读取zip文件的方法示例
Nov 17 PHP
php中__toString()方法用法示例
Dec 07 PHP
PHP实现数据库统计时间戳按天分组输出数据的方法
Oct 10 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
我的论坛源代码(三)
2006/10/09 PHP
PHP的openssl加密扩展使用小结(推荐)
2016/07/18 PHP
js函数般调用正则
2008/04/08 Javascript
直接生成打开窗口代码,不必下载
2008/05/14 Javascript
javascript学习笔记(二十) 获得和设置元素的特性(属性)
2012/06/20 Javascript
异步安全加载javascript文件的方法
2015/07/21 Javascript
JS三目运算(三元运算)方法详解
2017/03/01 Javascript
动态加载、移除js/css文件的示例代码
2018/03/20 Javascript
vue+springmvc导出excel数据的实现代码
2018/06/27 Javascript
实现Vue的markdown文档可以在线运行的方法示例
2018/12/11 Javascript
layui table表格数据的新增,修改,删除,查询,双击获取行数据方式
2019/11/14 Javascript
python检测是文件还是目录的方法
2015/07/03 Python
python使用pymysql实现操作mysql
2016/09/13 Python
理论讲解python多进程并发编程
2018/02/09 Python
判断python字典中key是否存在的两种方法
2018/08/10 Python
python实现一个简单的udp通信的示例代码
2019/02/01 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
完美解决python针对hdfs上传和下载的问题
2020/06/05 Python
详解用python -m http.server搭一个简易的本地局域网
2020/09/24 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
猫咪家具:CatsPlay
2018/11/03 全球购物
英国设计的甲板鞋和船鞋:Chatham
2018/12/06 全球购物
Lookfantastic澳大利亚官网:英国知名美妆购物网站
2021/01/07 全球购物
linux面试题参考答案(10)
2016/10/26 面试题
企业元宵节主持词
2014/03/25 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
小学优秀班集体申报材料
2014/05/25 职场文书
毕业生求职信范文
2014/06/29 职场文书
中药学专业毕业生推荐信
2014/07/10 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
六查六看自检自查剖析材料
2014/10/14 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
保姆聘用合同
2015/09/21 职场文书
PyTorch 如何设置随机数种子使结果可复现
2021/05/12 Python
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android