首页 > 解决方案 > 关于 Last_insert_id 一致性的困惑

问题描述

我的代码运行良好,但我有一个关于 Last_insert_ID() 一致性的一般性问题。我的数据库存储在在线服务器上,许多用户会使用它,所以我对 Last_insert_id 有点困惑,它可以将错误的插入 ID 插入到链接表中。我使用的代码如下。我正在使用事务。请说清楚。

注意:我没有使用 AutoCommit=0;

$conn->beginTransaction();

$users_stmt=$conn->prepare("INSERT INTO users (cust_name, u_name, cnic, address, password, email) VALUES (:cust_name, :u_name, :cnic, :address, :password, :email)");
$users_stmt->execute(["cust_name"=>$cust_name, "u_name"=>$u_name, "cnic"=>$cnic_num, "address"=>$address, "password"=>$password, "email"=>$email]);

$var1 = $conn->lastInsertId();
$cell_stmt = $conn->prepare("INSERT INTO cell_num (cell_num,u_id_fk) VALUES (:cell_num, :u_id_fk)");
                                $cell_stmt->execute(["cell_num"=>$cellnum, "u_id_fk"=>$var1]);

$connections_stmt=$conn->prepare("INSERT INTO connections(u_id_fk,pkg_id_fk) VALUES(:u_id_fk,:pkg_id_fk)");
$connections_stmt->execute(["u_id_fk"=>$var1,"pkg_id_fk"=>$pkg_id]);


$conn->commit();

标签: phpmysqlpdotransactions

解决方案


推荐阅读