这已被问了很多,但我似乎仍无法绕过它。
我收到此错误: 警告: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);
我读过的大多数其他解决方案都说这是因为查询可能失败了,但事实并非如此,因为我从查询中测试返回的数据以查看它是否存在,它确实存在,因此标记被执行。为什么我不能释放呢?当我使用它时,我以为我应该总是发布返回的数据?
感谢所有人!
答案 0 :(得分:3)
您应该查看the manual。
失败时返回 FALSE 。对于成功的
SELECT
,SHOW
,DESCRIBE
或EXPLAIN
个查询mysqli_query()
将返回mysqli_result
个对象。对于其他成功的查询mysqli_query()
将返回 TRUE “
我的猜测是您正在使用UPDATE
查询 - 因此您会收到 TRUE (布尔值)返回。您只能对返回mysqli_free_result
对象的查询使用mysqli_result
。
要重新进行迭代,如果您使用SELECT
,SHOW
,DESCRIBE
或EXPLAIN
查询并且查询成功运行,您可以使用{{1 }}。
如果您使用上述4之外的任何内容(例如mysqli_free_result
或INSERT
),则无法使用UPDATE
,因为结果始终为 TRUE < / strong>(如果成功)或 FALSE (如果失败)。
答案 1 :(得分:0)
执行查询时生成错误时会发生这种情况
因此,$ result将具有布尔值false
您应该尝试释放内部if子句
有关详细信息,请参阅official documentation
中的“程序样式”示例答案 2 :(得分:0)
使用此:
$result->close();