繁体   English   中英

$ mysqli->准备使用SQL事务

[英]$mysqli->prepare with SQL Transactions

我对SQL Transactions很陌生,并尝试执行以下语句,但不幸的是它不起作用...

$stmt = $mysqli->prepare("

BEGIN;

INSERT INTO groups (group_name, group_desc, user_id_fk) VALUES ("'.$groupName.'","'.$groupDesc.'","'.$user_id.'");

INSERT INTO group_users (group_id_fk, user_id_fk) VALUES (LAST_INSERT_ID(), "'.$username.'");

COMMIT;

") or trigger_error($mysqli->error, E_USER_ERROR);

$stmt->execute();

$stmt->close();

我在这里尝试的可能吗,还是完全错误?

感谢您的答复,谢谢!

您使用错误的prepare()方法。 如果直接在查询中添加变量,则使用prepare()绝对没有意义。

这是必须执行查询的方式:

$mysqli->query("BEGIN");

$sql = "INSERT INTO groups (group_name, group_desc, user_id_fk) VALUES (?,?,?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ssi",$groupName,$groupDesc,$user_id);
$stmt->execute();

$sql = "INSERT INTO group_users (group_id_fk, user_id_fk) VALUES (LAST_INSERT_ID(), ?)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("s",$username);
$stmt->execute();

$mysqli->query("COMMIT");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM