php使用PDO事務配合表格讀取大量數(shù)據(jù)插入操作實現(xiàn)方法
本文實例講述了php使用PDO事務配合表格讀取大量數(shù)據(jù)插入操作實現(xiàn)方法。分享給大家供大家參考,具體如下:
在處理大量數(shù)據(jù)的時候,或者同時對幾個表操作,而這幾個表的操作要求,要么都成功,要么都失敗的時候,就需要用到事物,而PDO中提供的事物,一般可以滿足需求。
關于事務的具體講解,http://m.fzitv.net/article/105744.htm
本篇文章,只涉及一個小例子。
在向數(shù)據(jù)庫導入一個表格的時候,難免excel文件中存在部分錯誤,如果用常規(guī)方法,將會導致,一部分插入了數(shù)據(jù)庫,一部分沒有插入,會帶了很大的不便。
<?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();//創(chuàng)建對象
$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");//設置數(shù)據(jù)庫編碼
$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);//綁定參數(shù)
$result->bindParam(2,$id2);//綁定參數(shù)
$result->bindParam(3,$id3);//綁定參數(shù)
$result->bindParam(4,$id4);//綁定參數(shù)
$result->bindParam(5,$id5);//綁定參數(shù)
echo $result->execute();//執(zhí)行插入操作
}
$pdo->commit();//執(zhí)行事物的提交操作*/
}catch (PDOException $e){
die("Error!: ".$e->getMessage().'<br>');
$pdo->rollBack();//執(zhí)行事物的回滾操作
}
補充:
異常模式將會創(chuàng)建一個PDOException,并設置errorCode屬性,它可以將執(zhí)行代碼封裝到一個try{}catch{}語句塊中。未捕獲的異常將會導致腳本中斷,并顯示堆棧跟蹤讓用戶了解是哪里出現(xiàn)了問題。
除此之外:
警告模式會產(chǎn)生一個PHP警告,并設置errorCode屬性。如果設置的是警告模式,那么除非明確的檢查錯誤代碼,否則程序?qū)⒗^續(xù)按照其方式運行。
在默認模式中設置PDOStatement對象的errorCode屬性,但不進行其他任何操作。
附:
php-excel-reader本站下載地址: http://m.fzitv.net/codes/67223.html
更多關于PHP相關內(nèi)容感興趣的讀者可查看本站專題:《PHP基于pdo操作數(shù)據(jù)庫技巧總結(jié)》、《php+Oracle數(shù)據(jù)庫程序設計技巧總結(jié)》、《PHP+MongoDB數(shù)據(jù)庫操作技巧大全》、《php面向?qū)ο蟪绦蛟O計入門教程》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
- PHP5中使用PDO連接數(shù)據(jù)庫的方法
- PHP中PDO連接數(shù)據(jù)庫中各種DNS設置方法小結(jié)
- ThinkPHP框架基于PDO方式連接數(shù)據(jù)庫操作示例
- PHP實現(xiàn)的pdo連接數(shù)據(jù)庫并插入數(shù)據(jù)功能簡單示例
- PHP利用pdo_odbc實現(xiàn)連接數(shù)據(jù)庫示例【基于ThinkPHP5.1搭建的項目】
- php中在PDO中使用事務(Transaction)
- php下pdo的mysql事務處理用法實例
- PHP基于PDO實現(xiàn)的SQLite操作類【包含增刪改查及事務等操作】
- php PDO實現(xiàn)的事務回滾示例
- php的PDO事務處理機制實例分析
- php pdo連接數(shù)據(jù)庫操作示例
相關文章
PHP采集靜態(tài)頁面并把頁面css,img,js保存的方法
這篇文章主要介紹了PHP采集靜態(tài)頁面并把頁面css,img,js保存的方法,可以實現(xiàn)簡單的網(wǎng)頁抓取功能,具有一定的參考借鑒價值,需要的朋友可以參考下2014-12-12
php實現(xiàn)簡單的守護進程創(chuàng)建、開啟與關閉操作
這篇文章主要介紹了php實現(xiàn)簡單的守護進程創(chuàng)建、開啟與關閉操作,結(jié)合實例形式分析了基于pcntl擴展的php守護進程類定義、啟動及關閉等相關操作技巧,需要的朋友可以參考下2019-08-08
Discuz5.5.0代碼高亮顯示+運行代碼框合成插件 下載
Discuz5.5.0代碼高亮顯示+運行代碼框合成插件 下載...2007-07-07

