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错误Parse error: syntax error, unexpected end of file in test.php on line 12解决方法
Jun 23 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
Jul 01 PHP
个人写的PHP验证码生成类分享
Aug 21 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
Jan 07 PHP
php函数实现判断是否移动端访问
Mar 03 PHP
PHP模拟QQ登录的方法
Jul 29 PHP
微信利用PHP创建自定义菜单的方法
Aug 01 PHP
PHP实现截取中文字符串不出现?号的解决方法
Dec 29 PHP
使用SMB共享来绕过php远程文件包含的限制执行RFI的利用
May 31 PHP
PHP数据源架构模式之表入口模式实例分析
Jan 23 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内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
php抓取并保存网站图片的实现代码
2015/10/28 PHP
thinkphp5 框架结合plupload实现图片批量上传功能示例
2020/04/04 PHP
jquery仿QQ商城带左右按钮控制焦点图片切换滚动效果
2013/06/27 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
JS实现超过长度限制后自动跳转下一款文本框的方法
2015/02/23 Javascript
JavaScript父子窗体间的调用方法
2015/03/31 Javascript
基于JavaScript实现类似于百度学术高级检索功能
2016/03/02 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
Javascript中字符串相关常用的使用方法总结
2017/03/13 Javascript
JavaScript实现审核流程状态的动态显示进度条
2017/03/15 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
jQuery简单判断值是否存在于数组中的方法示例
2018/04/17 jQuery
详解vue-cli项目中怎么使用mock数据
2018/05/29 Javascript
js时间转换毫秒的实例代码
2019/08/21 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
树莓派中python获取GY-85九轴模块信息示例
2013/12/05 Python
Python采用socket模拟TCP通讯的实现方法
2014/11/19 Python
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
示例详解Python3 or Python2 两者之间的差异
2018/08/23 Python
python自动化之Ansible的安装教程
2019/06/13 Python
python中删除某个元素的方法解析
2019/11/05 Python
利用Pytorch实现简单的线性回归算法
2020/01/15 Python
selenium框架中driver.close()和driver.quit()关闭浏览器
2020/12/08 Python
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
小学教师寄语大全
2014/04/03 职场文书
快餐公司创业计划书
2014/04/29 职场文书
2014年司法所工作总结
2014/11/22 职场文书
小学语文教学随笔
2015/08/14 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python
一文搞懂redux在react中的初步用法
2021/06/09 Javascript