警告: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);
我读过的大多数其他解决方案都说这是因为查询可能失败了,但事实并非如此,因为我测试了查询返回的数据以查看它是否存在,所以<h1>
标签被执行。那我怎么放不出来?我认为我应该总是在处理完返回的数据后发布它?
【问题讨论】:
来自手册:“失败时返回 FALSE。对于成功的SELECT
、SHOW
、DESCRIBE
或 EXPLAIN
查询 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。对于成功的
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->close();
【讨论】:
答案应该不仅仅是简单的代码。问题的作者明确表示,他在理解他所描述的问题方面存在问题。以上是关于警告:mysqli_free_result() 再次 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
PHP mysqli_free_result()与mysqli_fetch_array()函数
安装 redist 时,Qt Creator 4.0.3 报告“警告:在 C:\... 中找不到 Visual Studio 发行版可再发行文件”