1

我收到此错误:

警告:mysqli_free_result() 期望参数 1 为 mysqli_result,布尔值在

在我的代码中,我有:

// Perform it
$result = mysqli_query($connection, $query);

if ($result) {
  // Success
  echo "<h1>Uploaded results to database</h1>";
} else {
  echo "FAILURE: Couldn't perform query on database: " . mysqli_error($connection);
}


// Release
mysqli_free_result($result);

我读过的大多数其他解决方案都说这是因为查询可能失败了,但事实并非如此,因为我测试了查询返回的数据以查看它是否存在,并且确实存在,因此<h1>标签被执行。那我怎么放不出来?我认为我应该总是在处理完返回的数据后发布它?

4

3 回答 3

3

你应该看看手册

失败时返回FALSE。对于成功SELECTSHOW、、DESCRIBEEXPLAIN查询mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询 mysqli_query()将返回TRUE "

我的猜测是您正在使用UPDATE查询 - 因此您得到一个TRUE(布尔值)返回。您只能mysqli_free_result在那些返回mysqli_result对象的查询上使用。

要重新迭代,如果您使用SELECT、或查询并且查询成功运行SHOW,则可以使用.DESCRIBEEXPLAINmysqli_free_result

如果您使用上述 4 之外的任何内容(如INSERTUPDATE),则无法使用,mysqli_free_result因为结果将始终为TRUE(如果成功)或FALSE(如果失败)。

于 2013-11-08T11:26:59.423 回答
0

当执行查询时产生错误时会发生这种情况。
因此, $result 将具有 boolean value false
您应该尝试在 if 子句中释放

更多细节可以参考官方文档中的“Procedural style”示例

于 2013-11-08T11:19:06.350 回答
0

用这个: $result->close();

于 2015-01-07T13:28:18.763 回答