我有这个代码。如果我没有存储过程调用,一切正常(并且是正确的)。但由于某种原因,存储过程调用会阻止下一个语句。我该如何解决?
// GET ID
$stmt = $db->query("CALL GetNewOrderNo");
while($row = $stmt->fetch_assoc()) {
$orderid = $row["OrderId"];
}
$stmt->close();
// Add ID
$upd = $db->prepare("UPDATE orders SET orderid=? WHERE customer=? AND info_date=? AND orderid='' LIMIT 1");
$upd->bind_param("ssi", $orderid, $customer, $datetime);
$upd->execute();
答案 0 :(得分:0)
MySQL存储过程可以返回多个结果集,这是在使用相同连接执行另一个查询之前清除所有结果的原因。
在程序调用后使用nextRowset()
:
$stmt = $db->query("CALL GetNewOrderNo");
while($row = $stmt->fetch_assoc()) {
$orderid = $row["OrderId"];
}
$stmt->nextRowset();
$stmt->close();
答案 1 :(得分:-1)
试试这个 $ stmt = $ db-> query(" CALL GetNewOrderNo;"); 添加";"