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 相关文章推荐
NO3第三帝国留言簿制作过程
Oct 09 PHP
PHP is_dir() 判断给定文件名是否是一个目录
May 10 PHP
PHP学习笔记之二
Jan 17 PHP
php数组函数序列之rsort() - 对数组的元素值进行降序排序
Nov 02 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
Feb 04 PHP
PHP处理会话函数大总结
Aug 05 PHP
学习php设计模式 php实现门面模式(Facade)
Dec 07 PHP
PHP-FPM实现性能优化
Mar 31 PHP
php 读取输出其他文件的实现方法
Jul 26 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
Jul 19 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
PHP封装的page分页类定义与用法完整示例
Dec 24 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中使用socket方式GET、POST数据实例
2015/04/02 PHP
php实现curl模拟ftp上传的方法
2015/07/29 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
写出更好的JavaScript之undefined篇(上)
2009/11/22 Javascript
javascript当中的代码嗅探扩展原生对象和原型(prototype)
2013/01/11 Javascript
extjs表格文本启用选择复制功能具体实现
2013/10/11 Javascript
jQuery中验证表单提交方式及序列化表单内容的实现
2014/01/06 Javascript
JavaScript实现列出数组中最长的连续数
2014/12/29 Javascript
兼容各大浏览器的JavaScript阻止事件冒泡代码
2015/07/09 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
jQuery Validate初步体验(二)
2015/12/12 Javascript
JavaScript实现点击文本自动定位到下拉框选中操作
2016/06/15 Javascript
Bootstrap进度条学习使用
2017/02/09 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
vue2手机APP项目添加开屏广告或者闪屏广告
2017/11/28 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
angular 用Observable实现异步调用的方法
2018/12/27 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
在Python中使用HTML模版的教程
2015/04/29 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
2017/12/12 Python
selenium+python实现1688网站验证码图片的截取功能
2018/08/14 Python
Python中请不要再用re.compile了
2019/06/30 Python
Python文件读写w+和r+区别解析
2020/03/26 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
Python3爬虫中Ajax的用法
2020/07/10 Python
python时间time模块处理大全
2020/10/25 Python
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
韩国爱茉莉太平洋化妆品美国站:Amore Pacific US
2016/10/28 全球购物
元旦活动感言
2014/03/08 职场文书
高校教师岗位职责
2014/03/18 职场文书
汇源肾宝广告词
2014/03/20 职场文书
群众路线班子对照检查材料
2014/09/25 职场文书
追悼会答谢词
2015/01/05 职场文书
拉贝日记观后感
2015/06/05 职场文书
2016关于读书活动的心得体会
2016/01/14 职场文书