gpt4 book ai didi

php - 如何使用带事务的 php 插入到两个表中?

转载 作者:可可西里 更新时间:2023-11-01 07:05:15 26 4
gpt4 key购买 nike

我知道用单个查询插入多个表是不可能的,

现在我正尝试使用 START TRANSACTION 将 php 插入到 2 个表中,但它不起作用。

我的sql查询看起来像

mysqli_query($con,"START TRANSACTION
INSERT INTO users VALUES ('', '$getuser', '$getpass', '$getemail', '$fname', '$lname', '$domain', '$address1', '$address2', '$city', '$country', '$region', '$zip', '$phone', '$getplan', '$duration', '$getprice', '', '0', '0', '$code', '$date', '$time','0', '', '')
INSERT INTO domains (username) VALUES ('$getuser') COMMIT");

那么问题出在哪里呢??

非常感谢。

最佳答案

因为mysqli_query每次只能处理一个命令。像这样拆分它们:

mysqli_query($con, "SET AUTOCOMMIT=0");
mysqli_query($con,"START TRANSACTION");
$insert1 = mysqli_query($con,"INSERT INTO users VALUES ('', '$getuser', '$getpass', '$getemail', '$fname', '$lname', '$domain', '$address1', '$address2', '$city', '$country', '$region', '$zip', '$phone', '$getplan', '$duration', '$getprice', '', '0', '0', '$code', '$date', '$time','0', '', '')");
$insert2 = mysqli_query($con,"INSERT INTO domains (username) VALUES ('$getuser')");

if($insert1 && $insert2) {
mysqli_query($con,"COMMIT");
} else {
mysqli_query($con,"ROLLBACK");
}
mysqli_query($con, "SET AUTOCOMMIT=1");

更新:如果您以面向对象的方式使用 mysqli,您可以执行以下操作:

$mysqli->begin_transaction();
$insert1 = $mysqli->query("INSERT INTO users VALUES ('', '$getuser', '$getpass', '$getemail', '$fname', '$lname', '$domain', '$address1', '$address2', '$city', '$country', '$region', '$zip', '$phone', '$getplan', '$duration', '$getprice', '', '0', '0', '$code', '$date', '$time','0', '', '')");
$insert2 = $mysqli->query("INSERT INTO domains (username) VALUES ('$getuser')");

if($insert1 && $insert2) {
$mysqli->commit();
} else {
$mysqli->rollback();
}

提示:如果您使用较旧的 PHP 版本 5.5.0,则不能使用 $mysqli->begin_transaction(); 而必须使用 $mysqli->autocommit(false); 在开头,$mysqli->autocommit(true); 在结尾

关于php - 如何使用带事务的 php 插入到两个表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25263500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com