首頁 > 後端開發 > php教程 > 如何在 PHP 中有效管理 MySQL 事務?

如何在 PHP 中有效管理 MySQL 事務?

Mary-Kate Olsen
發布: 2024-12-19 10:41:16
原創
131 人瀏覽過

How to Manage MySQL Transactions Effectively in PHP?

PHP MySQL 交易範例

PHP 和 MySQL 中的交易可讓您將一組查詢分組為單一原子工作單元。這意味著如果其中一個查詢失敗,事務所所做的所有更改都會回滾。

如何使用事務

在PHP 和MySQL,您將需要:

  1. 透過呼叫mysql_query("SET AUTOCOMMIT=0")啟動事務並mysql_query("START TRANSACTION").
  2. 執行查詢。
  3. 如果所有查詢都成功,則透過呼叫 mysql_query("COMMIT") 提交交易。
  4. 如果任何查詢失敗,請透過呼叫回滾事務mysql_query("ROLLBACK").

範例

以下是如何在PHP 和MySQL 中使用交易的簡單範例:

mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");

$a1 = mysql_query("INSERT INTO rarara (l_id) VALUES('1')");
$a2 = mysql_query("INSERT INTO rarara (l_id) VALUES('2')");

if ($a1 and $a2) {
    mysql_query("COMMIT");
} else {        
    mysql_query("ROLLBACK");
}
登入後複製

在此範例中,只有當 $a1 和 $a2 都成功時才會執行 COMMIT 語句。如果任一查詢失敗,則會執行 ROLLBACK 語句。

使用 PDO 進行事務

PDO 類別提供了一種更現代、物件導向的工作方式MySQL 事務。要使用 PDO 進行事務,您需要:

  1. 建立一個 PDO 物件並將 PDO::ATTR_ERRMODE 屬性設為 PDO::ERRMODE_EXCEPTION。
  2. 透過呼叫$ 啟動事務pdo->beginTransaction().
  3. 執行你的
  4. 如果所有查詢都成功,則透過呼叫$pdo->commit() 提交事務。
  5. 如果任何查詢失敗,則透過呼叫回滾交易$pdo->rollback().

範例

以下是如何使用PDO 進行交易的範例:

try {
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $pdo->beginTransaction();

    $pdo->exec("INSERT INTO rarara (l_id) VALUES('1')");
    $pdo->exec("INSERT INTO rarara (l_id) VALUES('2')");

    $pdo->commit();
} catch (\PDOException $e) {
    $pdo->rollback();
    throw $e;
}
登入後複製

在此範例中,只有當兩個查詢都成功時才會呼叫 commit() 方法。如果任一查詢失敗,則會呼叫 rollback() 方法並引發異常。

以上是如何在 PHP 中有效管理 MySQL 事務?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板