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注入点构造代码
Jun 14 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
二招解决php乱码问题
Mar 25 PHP
ThinkPHP空模块和空操作详解
Jun 30 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
PHP中实现接收多个name相同但Value不相同表单数据实例
Feb 03 PHP
详解WordPress中简码格式标签编写的基本方法
Dec 22 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
Dec 24 PHP
php获取当前页面完整URL地址
Dec 30 PHP
详解php中的implements 使用
Jun 13 PHP
分享5个非常有用的Laravel Blade指令
May 30 PHP
PHP基于cookie实现统计在线人数功能示例
Jan 16 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与已存在的Java应用程序集成
2006/10/09 PHP
PHP页面中文乱码分析
2013/10/29 PHP
PHP中模拟处理HTTP PUT请求的例子
2014/07/22 PHP
ThinkPHP模板输出display用法分析
2014/11/26 PHP
PHP获取二维数组中某一列的值集合
2015/12/25 PHP
Yii2.0表关联查询实例分析
2016/07/18 PHP
javascript 实现父窗口引用弹出窗口的值的脚本
2007/08/07 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
用JS实现一个TreeMenu效果分享
2011/08/28 Javascript
jQuery检测鼠标左键和右键点击的方法
2015/03/17 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
JavaScript中将数组进行合并的基本方法讲解
2016/03/07 Javascript
javascript弹出带文字信息的提示框效果
2016/07/19 Javascript
微信小程序 引用其他js文件实现代码
2017/02/22 Javascript
JS实现div模块的截图并下载功能
2017/10/17 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
微信小程序new Date()方法失效问题解决方法
2019/07/29 Javascript
Node绑定全局TraceID的实现方法
2019/11/14 Javascript
如何使用jQuery操作Cookies方法解析
2020/09/08 jQuery
antd Select下拉菜单动态添加option里的内容操作
2020/11/02 Javascript
Vue中强制组件重新渲染的正确方法
2021/01/03 Vue.js
Python3基础之基本运算符概述
2014/08/13 Python
简单谈谈Python中函数的可变参数
2016/09/02 Python
对python PLT中的image和skimage处理图片方法详解
2019/01/10 Python
Python numpy数组转置与轴变换
2019/11/15 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
美国家喻户晓的保健品品牌:Vitamin World(维他命世界)
2016/08/19 全球购物
全球最大的在线橄榄球商店:Lovell Rugby
2018/05/20 全球购物
2013年高中生自我评价
2013/10/23 职场文书
社区交通安全实施方案
2014/03/22 职场文书
保密工作整改情况汇报
2014/11/06 职场文书
农业项目投资意向书
2015/05/09 职场文书
2016银行求职自荐信
2016/01/28 职场文书
asyncio异步编程之Task对象详解
2022/03/13 Python