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
Dec 13 PHP
phpmyadmin 访问被拒绝的真实原因
Jun 15 PHP
php 连接mssql数据库 初学php笔记
Mar 01 PHP
PHP 检查扩展库或函数是否可用的代码
Apr 06 PHP
PHP 图片上传实现代码 带详细注释
Apr 29 PHP
工厂模式在Zend Framework中应用介绍
Jul 10 PHP
php压缩HTML函数轻松实现压缩html/js/Css及注意事项
Jan 27 PHP
PHP之sprintf函数用法详解
Nov 12 PHP
PHP中is_dir()函数使用指南
May 08 PHP
PHP读取文件内容的五种方式
Dec 28 PHP
为何说PHP引用是个坑,要慎用
Apr 02 PHP
解决PhpStorm64不能启动的问题
Jun 20 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使之能同时支持GIF和JPEG
2006/10/09 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
php目录操作实例代码
2014/02/21 PHP
thinkphp验证码显示不出来的解决方法
2014/03/29 PHP
php采用ajax数据提交post与post常见方法总结
2014/11/10 PHP
最新制作ThinkPHP3.2.3完全开发手册
2015/11/23 PHP
简单的php+mysql聊天室实现方法(附源码)
2016/01/05 PHP
详解php中serialize()和unserialize()函数
2017/07/08 PHP
jquery之Document元素选择器篇
2008/08/14 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
JavaScript函数使用的基本教程
2015/06/04 Javascript
基于jquery实现鼠标滚轮驱动的图片切换效果
2015/10/26 Javascript
Bootstrap每天必学之按钮(一)
2015/11/24 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
jquery插件ContextMenu设置右键菜单
2017/03/13 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
JQuery 实现文件下载的常用方法分析
2019/10/29 jQuery
js DOM的事件常见操作实例详解
2019/12/16 Javascript
jquery实现吸顶导航效果
2020/01/08 jQuery
详解vite+ts快速搭建vue3项目以及介绍相关特性
2021/02/25 Vue.js
python开启摄像头以及深度学习实现目标检测方法
2018/08/03 Python
使用Python实现跳一跳自动跳跃功能
2019/07/10 Python
利用OpenCV和Python实现查找图片差异
2019/12/19 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
Timex手表官网:美国运动休闲手表品牌
2017/01/28 全球购物
英国在线泳装店:Simply Swim
2019/05/05 全球购物
adidas瑞典官方网站:购买阿迪达斯鞋子和运动服
2019/12/11 全球购物
安全生产责任书
2014/03/12 职场文书
旅游管理毕业生自荐信范文
2014/03/19 职场文书
公共场所禁烟标语
2014/06/25 职场文书
关于晚自习早退的检讨书
2014/09/13 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
代理词怎么写
2015/05/25 职场文书
2019个人半年工作总结
2019/06/21 职场文书
Django框架中视图的用法
2022/06/10 Python