警告:mysqli_free_result() 再次 [重复]

Posted

技术标签:

【中文标题】警告:mysqli_free_result() 再次 [重复]【英文标题】:Warning: mysqli_free_result() again [duplicate] 【发布时间】: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;标签被执行。那我怎么放不出来?我认为我应该总是在处理完返回的数据后发布它?

【问题讨论】:

来自手册:“失败时返回 FALSE。对于成功的 SELECTSHOWDESCRIBEEXPLAIN 查询 mysqli_query() 将返回一个 @ 987654329@ 对象。对于 其他成功的查询mysqli_query() 将返回 TRUE" - 我猜你正在使用 UPDATE 查询 - 因此你得到一个 TRUE(布尔值)返回。您只能在返回 mysqli_result 对象的查询上使用 mysqli_free_result 也发布您的查询.. 这能回答你的问题吗? mysqli_fetch_assoc() expects parameter / Call to a member function bind_param() errors. How to get the actual mysql error and fix it? 【参考方案1】:

你应该看看the manual。

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

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

再次迭代,如果您使用SELECTSHOWDESCRIBEEXPLAIN 查询并且查询运行成功,则可以使用mysqli_free_result

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

【讨论】:

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

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

答案应该不仅仅是简单的代码。问题的作者明确表示,他在理解他所描述的问题方面存在问题。

以上是关于警告:mysqli_free_result() 再次 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

PHP mysqli_free_result()与mysqli_fetch_array()函数

警告!别再使用 TIMESTAMP 作为日期字段~

警告!别再使用 TIMESTAMP 作为日期字段~

安装 redist 时,Qt Creator 4.0.3 报告“警告:在 C:\... 中找不到 Visual Studio 发行版可再发行文件”

盖茨再捐200亿美元,谷歌云转投ARM,推特员工因马斯克遭CEO警告,今日更多大新闻在此...

20211010 PHP笔记