php - 什么是正确的交易方式
问题描述
我试图在一次调用中进行多个查询,因此我将代码组织如下:
try{
$query = $this->conn->begin_transaction();
$query = $this->conn->prepare("INSERT INTO table1(xx, xxx, xxxx, xxxxx, xxxxxx, xxxxxxx, xxxxxxxx, xxxxxxxxx, xxxxxxxxxx, xxxxxxxxxxx, xxxxxxxxxxx)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
$query->bind_param("sssssssssss", $var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var8, $var9, $var10);
$result1 = $query->execute();
$var1= $xxx- $xxxx;
$query = $this->conn->prepare("UPDATE table2 set xxx = ? WHERE xxxx = ?");
$query->bind_param("ss", $var1, $var2);
$result2 = $query->execute();
$query = $this->conn->prepare("INSERT INTO table3 (xx, xxx, xxxx, xxxxx, xxxxxx, xxxxxxx)
VALUES (?, ?, ?, ?, ?, ?) ");
$query->bind_param("ssssss", $var1, $var2, $var3, $var4, $var5, $var6);
$result3 = $query->execute();
$query = $this->conn->commit();
if($result1 == true AND $result2 == true AND $result3 == TRUE){
return "Success";
}
exit();
}catch (Exception $e){
$this->conn->rollback();
throw $e;
}
不确定这是否是正确的方法,但如果所有查询都不正确,我不想在数据库中插入/更新记录。如果有人可以通过代码告诉我他的想法,这将对我有很大帮助,这很好,但我不确定这是否是一个好方法。
解决方案
推荐阅读
- go - 如何在循环中使用指针更改切片元素
- c++ - std::distance "没有找到匹配的重载函数"
- python - 如何在不使用 if 语句进行打印的情况下输出带小数点的值
- ios - iOS 如何调试由于超过 60 秒超过 80% cpu 的限制而终止的应用程序
- javascript - 如何使用 Interval 函数增加 noUiSlider 值?
- go - GO 新手,在条件内分配错误
- python - Python win32com 演示outlookaddin.py 控制按钮标题不起作用
- swift - SwiftUI 有没有办法改变 tabItem 的大小
- css - 如何使用 Tailwind 创建垂直时间线
- java - 在 Java Intellij 中导入 org.python.core.* 和 org.python.util.*