PHP Commands Out of Sync 错误
在 PHP/MySQLi 中运行多个准备好的语句时,有可能会遇到“Commands out of Sync”错误同步,您现在无法运行该命令”错误。当后续语句尝试执行而先前的结果数据在缓冲区中仍未处理时,就会发生这种情况。
要纠正此问题,必须使用 mysqli_free_result() 函数在执行下一条语句之前显式释放存储的结果数据陈述。此外,在每个语句执行后调用 mysqli 对象上的 next_result() 函数以使内部指针前进到下一个结果集至关重要。
在您的特定代码示例中,在执行期间出现错误$stmt1 因为 $stmt 的结果未清除。通过显式调用 mysqli_free_result($stmt) 并随后调用 $mysqli->next_result(),可以确保清空缓冲区并重置下一条语句的指针。
修改后的代码示例:
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($user_id, $username, $db_password, $firstname, $lastname, $salt);
$stmt->fetch();
$stmt->free_result();
$stmt->close();
while ($mysqli->more_results()) {
$mysqli->next_result();
}
$stmt1 = $mysqli->prepare("SELECT privileges FROM delegations WHERE id = ? LIMIT 1");
$stmt1->bind_param('s', $user_id);
$stmt1->execute();
$stmt1->store_result();
$stmt1->bind_result($privileges);
$stmt1->fetch();
$stmt1->free_result();
$stmt1->close();
通过实施这些修复,您将消除“命令不同步”错误,并确保后续准备好的语句可以无缝执行。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3