-1

我正在使用 PHP/MySqli 进行查询,如下所示:

$sql = $mysqli->prepare("SELECT * FROM rooms
WHERE 1
LIMIT 0, 30 ");

$result = "['Number', 'Status', 'Category', 'Pbx Number', 'Price for today'],";
$sql->execute();
$sql->bind_result($id, $number, $status, $category, $pbx);

while ($sql->fetch()) {

$result .= " ['$number', '$status', '$category', '$pbx',"  . priceForRoom($mysqli, $number, time()) . "],";

}

$sql->free_result();
return ($result);

一切正常,只要priceForRoom()不需要连接到 mysqli db 即可返回值。但是,一旦我实施priceForRoom()和使用 mysqli,我就会收到这个错误:

Commands out of sync; you can't run this command now

很多人都遇到了同样的错误,但我仍然不明白我该如何解决这个问题。我不想将结果存储在数组中,如何在mysqli_store_result不采用程序样式的情况下使用?我想保持我的代码面向对象:我应该要求 mysqli 在哪里存储结果?

4

1 回答 1

1

您需要将获取的结果存储到变量中,然后才能再次使用它们。

因此

$sql->bind_result($id, $number, $status, $category, $pbx);
while ($sql->fetch()) {
  $sql->store_result();

store_result()在 php.net 上阅读更多信息。

于 2013-03-22T13:24:26.107 回答