【问题标题】:Warning: mysqli_free_result() again [duplicate]警告:mysqli_free_result() 再次 [重复]
【发布时间】:2013-11-08 11:15:56
【问题描述】:

我收到此错误:

警告: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);

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

【问题讨论】:

标签: php mysql sql mysqli


【解决方案1】:

你应该看看the manual。

失败时返回 FALSE。对于成功的SELECT、SHOW、DESCRIBE 或EXPLAIN 查询mysqli_query() 将返回一个mysqli_result 对象。对于其他成功查询,mysqli_query() 将返回 TRUE"

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

再次迭代,如果您使用SELECT、SHOW、DESCRIBE 或EXPLAIN 查询并且查询运行成功,则可以使用mysqli_free_result。

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

【讨论】:

  • 我发现这似乎可以两全其美……if (gettype($result)==="object") mysqli_free_result($result);
【解决方案2】:

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

更多细节可以参考official documentation的“程序风格”示例

【讨论】:

    【解决方案3】:

    使用这个: $result-&gt;close();

    【讨论】:

    • 答案应该不仅仅是简单的代码。问题的作者明确表示,他在理解他所描述的问题方面存在问题。
    猜你喜欢
    • 2013-10-26
    • 2014-05-20
    • 2013-02-23
    • 2019-07-16
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 2017-05-31
    • 2012-08-07
    相关资源
    最近更新 更多