函数名称:mysqli::begin_transaction()
适用版本:PHP 5 >= 5.5.0, PHP 7
函数描述:该函数用于在MySQL数据库上启动一个事务。
用法: mysqli::begin_transaction(int $flags = 0, string $name = NULL) : bool
参数:
$flags:可选参数,用于指定事务的行为。默认为0,表示使用默认行为。可以使用以下常量进行设置:
- MYSQLI_TRANS_START_READ_ONLY:启动只读事务
- MYSQLI_TRANS_START_READ_WRITE:启动读写事务
- MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT:启动一致性快照事务
$name:可选参数,用于指定事务的名称。如果使用InnoDB引擎并且支持命名事务,则可以使用此参数。
返回值:
- 如果事务成功启动,则返回true;否则返回false。
示例:
// 创建数据库连接
$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引擎。