我正在学习如何使用MYSQLi预处理语句,所以请放轻松我。我可以让这些单独工作,但当我把它们放在一起时,它们不起作用。
$con = my connection details.
这是我的查询代码:
// Insert the review into DB
$stmt = $con->prepare("INSERT INTO reviews (order_id, comment) VALUES (?, ?)");
$stmt->bind_param('is', $order_id, $comment);
$stmt->execute();
$stmt->close();
// Update transactions to show review added
$stmt = $con->prepare("UPDATE transactions SET review = ? WHERE order_id = ?");
$stmt->bind_param('ii', 1, $order_id);
$stmt->execute();
$stmt->close();
提前感谢您的帮助!非常感谢。
答案 0 :(得分:2)
您的代码很好但是您不应该将它们命名为$stmt
第一个陈述是$stmt
然后给出第二个名称,如$stmt2
。或者你喜欢什么名字。
示例:
$stmt = $con->prepare("INSERT INTO reviews (order_id, comment) VALUES (?, ?)");
$stmt->bind_param('is', $order_id, $comment);
$stmt->execute();
$stmt->close();
// Update transactions to show review added
$stmt2 = $con->prepare("UPDATE transactions SET review = ? WHERE order_id = ?");
$stmt2->bind_param('ii', 1, $order_id);
$stmt2->execute();
$stmt2->close();
并调试代码并查看错误的用途。
if ($stmt = $con->prepare("INSERT INTO reviews (order_id, comment) VALUES (?, ?)") ){
$stmt->bind_param('is', $order_id, $comment);
$stmt->execute();
$stmt->close();
}
else {printf("Error message:: %s\n", $con->error);}
答案 1 :(得分:0)
您可以使用$ stmt2,但如果您已经关闭$ stmt,则无需使用$ stmt2。关闭$ stmt后,您可以再次使用它