多个MYSQLi准备好的语句

时间:2014-03-16 10:13:44

标签: php mysql mysqli prepared-statement

我正在学习如何使用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(); 

提前感谢您的帮助!非常感谢。

2 个答案:

答案 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后,您可以再次使用它