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 相关文章推荐
推荐Discuz!5的PHP代码高亮显示与实现可运行代码
Mar 15 PHP
解决163/sohu/sina不能够收到PHP MAIL函数发出邮件的问题
Mar 13 PHP
PHP 开源框架22个简单简介
Aug 24 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
Jun 13 PHP
php+ajax 实现输入读取数据库显示匹配信息
Oct 08 PHP
编写PHP脚本来实现WordPress中评论分页的功能
Dec 10 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
Nov 22 PHP
详解php实现页面静态化原理
Jun 21 PHP
PHP添加PNG图片背景透明水印操作类定义与用法示例
Mar 12 PHP
PHP Swoole异步MySQL客户端实现方法示例
Oct 24 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 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
如何将数据从文本导入到mysql
2006/10/09 PHP
调试一段PHP程序时遇到的三个问题
2012/01/17 PHP
基于php权限分配的实现代码
2013/04/28 PHP
解析php mysql 事务处理回滚操作(附实例)
2013/08/05 PHP
php数组分页实现方法
2016/04/30 PHP
基于 Swoole 的微信扫码登录功能实现代码
2018/01/15 PHP
php设计模式之职责链模式实例分析【星际争霸游戏案例】
2020/03/27 PHP
js异或加解密效果代码
2008/06/25 Javascript
jquery.validate的使用说明介绍
2013/11/12 Javascript
js或jquery实现页面打印可局部打印
2014/03/27 Javascript
Javascript原型链和原型的一个误区
2014/10/22 Javascript
jQuery事件绑定on()与弹窗实现代码
2016/04/28 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
从0开始学Vue
2016/10/27 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
NodeJS 实现多语言的示例代码
2018/09/11 NodeJs
微信小程序实现弹出层效果
2020/05/26 Javascript
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
Python实现的检测web服务器健康状况的小程序
2014/09/17 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
2015/04/05 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
完美解决python3.7 pip升级 拒绝访问问题
2019/07/12 Python
PyTorch的自适应池化Adaptive Pooling实例
2020/01/03 Python
简单了解如何封装自己的Python包
2020/07/08 Python
深入了解Python enumerate和zip
2020/07/16 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
用css3实现当鼠标移进去时当前亮其他变灰效果
2014/04/08 HTML / CSS
英国在线泳装店:Simply Swim
2019/05/05 全球购物
小学生竞选班干部演讲稿
2014/04/24 职场文书
SQL Server中常用截取字符串函数介绍
2022/03/16 SQL Server