mysqli::begin_transaction
(mysqli_begin_transaction)啟動一個事務
函數名稱:mysqli::begin_transaction()
適用版本:PHP 5 >= 5.5.0, PHP 7
函數描述:該函數用於在MySQL數據庫上啟動一個事務。
用法: mysqli::begin_transaction(int $flags = 0, string $name = NULL) : bool
參數:
$flags:可選參數,用於指定事務的行為。默認為0,表示使用默認行為。可以使用以下常量進行設置:
$name:可選參數,用於指定事務的名稱。如果使用InnoDB引擎並且支持命名事務,則可以使用此參數。
返回值:
示例:
// 创建数据库连接$mysqli = new mysqli("localhost", "username", "password", "database"); // 检查连接是否成功if ($mysqli->connect_errno) { die("连接数据库失败:" . $mysqli->connect_error); } // 启动读写事务if ($mysqli->begin_transaction(MYSQLI_TRANS_START_READ_WRITE)) { try { // 执行事务操作$mysqli->query("INSERT INTO users (name, email) VALUES ('John', 'john@example.com')"); $mysqli->query("UPDATE users SET email = 'new_email@example.com' WHERE id = 1"); // 提交事务$mysqli->commit(); echo "事务已提交"; } catch (Exception $e) { // 回滚事务$mysqli->rollback(); echo "事务已回滚:" . $e->getMessage(); } } else { echo "无法启动事务"; } // 关闭数据库连接$mysqli->close();
以上示例演示瞭如何使用mysqli::begin_transaction()函數啟動一個讀寫事務,並在事務中執行插入和更新操作。如果事務成功執行,則提交事務;如果發生異常,則回滾事務。注意在使用事務時,必須確保數據庫引擎支持事務操作,例如InnoDB引擎。