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实现时间轴函数代码
Oct 08 PHP
一个PHP并发访问实例代码
Sep 06 PHP
单台服务器的PHP进程之间实现共享内存的方法
Jun 13 PHP
php计算两个坐标(经度,纬度)之间距离的方法
Apr 17 PHP
php使用cookie实现记住用户名和密码实现代码
Apr 27 PHP
PHP中创建和验证哈希的简单方法实探
Jul 06 PHP
WordPress中创建用户角色的相关PHP函数使用详解
Dec 25 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
PHP cURL获取微信公众号access_token的实例
Apr 28 PHP
thinkPHP5框架中widget的功能与用法详解
Jun 11 PHP
Laravel5框架自定义错误页面配置操作示例
Apr 17 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学习笔记之字符串编码的转换和判断
2014/05/22 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php限制文件下载速度的代码
2015/10/20 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
yii的入口文件index.php中为什么会有这两句
2016/08/04 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
php 中序列化和json使用介绍
2013/07/08 Javascript
node.js中的buffer.fill方法使用说明
2014/12/14 Javascript
Node.js实现批量去除BOM文件头
2014/12/20 Javascript
浅谈类似于(function(){}).call()的js语句
2015/03/30 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
快速解决js开发下拉框中blur与click冲突
2016/10/10 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
vue自定义键盘信息、监听数据变化的方法示例【基于vm.$watch】
2019/03/16 Javascript
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
Django中更新多个对象数据与删除对象的方法
2015/07/17 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Python实现的远程登录windows系统功能示例
2018/06/21 Python
Python简单基础小程序的实例代码
2019/04/28 Python
pyqt5 实现在别的窗口弹出进度条
2019/06/18 Python
python匿名函数用法实例分析
2019/08/03 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
Django框架models使用group by详解
2020/03/11 Python
解决Python Matplotlib绘图数据点位置错乱问题
2020/05/16 Python
Aveda美国官网:天然护发产品、洗发水、护发素和沙龙
2016/12/09 全球购物
小学领导班子对照材料
2014/08/23 职场文书
单位介绍信格式
2015/01/31 职场文书
导游词之云南丽江古城
2019/09/17 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
python垃圾回收机制原理分析
2022/04/13 Python