溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php如何使用PDO事務(wù)配合表格讀取大量數(shù)據(jù)進(jìn)行插入操作

發(fā)布時間:2021-07-08 08:55:33 來源:億速云 閱讀:187 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下php如何使用PDO事務(wù)配合表格讀取大量數(shù)據(jù)進(jìn)行插入操作,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

具體如下:

在處理大量數(shù)據(jù)的時候,或者同時對幾個表操作,而這幾個表的操作要求,要么都成功,要么都失敗的時候,就需要用到事物,而PDO中提供的事物,一般可以滿足需求。

關(guān)于事務(wù)的具體講解,https://www.jb51.net/article/105744.htm

本篇文章,只涉及一個小例子。

在向數(shù)據(jù)庫導(dǎo)入一個表格的時候,難免excel文件中存在部分錯誤,如果用常規(guī)方法,將會導(dǎo)致,一部分插入了數(shù)據(jù)庫,一部分沒有插入,會帶了很大的不便。

<?php
header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL ^ E_NOTICE);
require_once 'excel_reader2.php';//導(dǎo)入excel_reader文件
$data = new Spreadsheet_Excel_Reader();//創(chuàng)建對象
$data->setOutputEncoding('UTF-8');//設(shè)置編碼格式
$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è)置數(shù)據(jù)庫編碼
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);//異常模式
  $pdo->beginTransaction();//開啟事物
  $query = "INSERT INTO test SET id1=?,id2=?,id3=?,id4=?,id5=?";//預(yù)編譯插入語句
  $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,并設(shè)置errorCode屬性,它可以將執(zhí)行代碼封裝到一個try{}catch{}語句塊中。未捕獲的異常將會導(dǎo)致腳本中斷,并顯示堆棧跟蹤讓用戶了解是哪里出現(xiàn)了問題。
除此之外:

警告模式會產(chǎn)生一個PHP警告,并設(shè)置errorCode屬性。如果設(shè)置的是警告模式,那么除非明確的檢查錯誤代碼,否則程序?qū)⒗^續(xù)按照其方式運行。

在默認(rèn)模式中設(shè)置PDOStatement對象的errorCode屬性,但不進(jìn)行其他任何操作。

看完了這篇文章,相信你對“php如何使用PDO事務(wù)配合表格讀取大量數(shù)據(jù)進(jìn)行插入操作”有了一定的了解,如果想了解更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI