您好,登錄后才能下訂單哦!
小編給大家分享一下php如何使用PDO事務配合表格讀取大量數據進行插入操作,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!
具體如下:
在處理大量數據的時候,或者同時對幾個表操作,而這幾個表的操作要求,要么都成功,要么都失敗的時候,就需要用到事物,而PDO中提供的事物,一般可以滿足需求。
關于事務的具體講解,https://www.jb51.net/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如何使用PDO事務配合表格讀取大量數據進行插入操作”有了一定的了解,如果想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。