【发布时间】:2016-08-30 12:01:39
【问题描述】:
我对 PHP 手册中的这段代码的运行方式有一些疑问。我看到了其他抛出异常的示例(通常是面向对象的代码)或使用标志来跟踪每个单独查询的失败。
我的问题是为什么在决定提交或回滚之前必须标记错误并测试标记。查看下面的示例,如果提交不起作用,则无论如何都不会提交任何查询。
我还注意到他们只是在提交失败时退出。这会自动回滚所有内容吗?
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "test");
/* check connection */
if (!$link) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
/* set autocommit to off */
mysqli_autocommit($link, FALSE);
mysqli_query($link, "CREATE TABLE Language LIKE CountryLanguage");
/* Insert some values */
mysqli_query($link, "INSERT INTO Language VALUES ('DEU', 'Bavarian', 'F', 11.2)");
mysqli_query($link, "INSERT INTO Language VALUES ('DEU', 'Swabian', 'F', 9.4)");
/* commit transaction */
if (!mysqli_commit($link)) {
print("Transaction commit failed\n");
exit();
}
/* close connection */
mysqli_close($link);
?>
【问题讨论】:
-
您从哪里开始交易?
-
@Sven 在代码中可以看得很清楚。
标签: php mysqli commit rollback