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新手上路(十)
Oct 09 PHP
php is_file 判断给定文件名是否为一个正常的文件
May 10 PHP
php接口与接口引用的深入解析
Aug 09 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
PHP递归遍历指定目录的文件并统计文件数量的方法
Mar 24 PHP
php判断当前操作系统类型
Oct 28 PHP
php 解决扫描二维码下载跳转问题
Jan 13 PHP
PHP redis实现超迷你全文检索
Mar 04 PHP
自制PHP框架之模型与数据库
May 07 PHP
laravel 事件/监听器实例代码
Apr 12 PHP
laravel5.0在linux下解决.htaccess无效和去除index.php的问题
Oct 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
使用php4加速网络传输
2006/10/09 PHP
PHP二维数组的去重问题解析
2011/07/17 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
PHP常用数组函数介绍
2014/07/28 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
2018/07/31 PHP
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jQuery不兼容input的change事件问题解决过程
2014/12/05 Javascript
js基于面向对象实现网页TAB选项卡菜单效果代码
2015/09/09 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
BootStrap TreeView使用实例详解
2017/11/01 Javascript
Node.js搭建小程序后台服务
2018/01/03 Javascript
linux 后台运行node服务指令方法
2018/05/23 Javascript
深入理解JS中Number(),parseInt(),parseFloat()三者比较
2018/08/24 Javascript
vue双向绑定及观察者模式详解
2019/03/19 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
2020/04/26 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[44:47]Ti4 循环赛第三日 iG vs NaVi
2014/07/12 DOTA
[51:36]EG vs VP 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
Python 字符串操作方法大全
2014/03/11 Python
python实现对csv文件的列的内容读取
2018/07/04 Python
python aiohttp的使用详解
2019/06/20 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
Python递归函数特点及原理解析
2020/03/04 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
世界上最大的餐具公司:Oneida
2016/12/17 全球购物
安全协议书
2014/04/23 职场文书
祖国在我心中演讲稿300字
2014/05/04 职场文书
保研专家推荐信范文
2015/03/25 职场文书
22句经典语录:送给优柔寡断和胡思乱想的朋友们
2019/12/13 职场文书
Python超详细分步解析随机漫步
2022/03/17 Python