PHP如何检查是否需要关闭MySQLi查询?

ano*_*reh 5 php mysql mysqli prepared-statement

我为我正在处理的项目创建了一个简单的 MySQLi 类,以便更轻松、更简化地从数据库中提取和推送到数据库。(也是为了更熟悉 PHP 中的 OOP

我一直遇到的一个问题是努力使其尽可能高效。我尝试关闭/释放每个查询/语句/结果集。这样做时,我经常收到以下错误:

Warning: mysqli_result::close(): Couldn't fetch mysqli_result
Run Code Online (Sandbox Code Playgroud)

我想我得到了上面的内容,因为它试图连续两次关闭查询。

目前,我的班级可以做出准备和未准备的陈述。所以我尝试在 2 个地方关闭查询/语句。我在准备语句时检查我是否已经准备好了语句,如果是这样,我需要在创建新语句之前关闭旧语句,最后在类的析构函数中。

我意识到我可以在提取并存储结果后关闭查询/语句,但由于一些原因,这似乎很混乱。一方面,它消除了重用准备好的语句的可能性。以及不允许我在查询运行后提取有关查询的一些信息,例如受影响的行等。

我知道我可以只为每个查询存储这个信息,而不是什么,但似乎解决这个问题的正确方法是关闭/释放查询/语句,如果我需要再做一个,然后在最后再次的脚本。

我曾尝试环顾四周并阅读我应该如何正确处理这项任务,但我一直无法想出任何东西。

所以我的问题是,无论如何要测试查询或语句是否需要关闭或释放?或者我应该尝试解决这个问题有更好的方法吗?

感谢任何人可以提供的任何帮助或见解。

Ign*_*s R 1

我认为如果结果集中没有剩余行,它应该自动关闭。因此,如果您迭代整个结果集,则无需调用mysqli_result. 但是,如果您只从包含大约 100 行的结果集中获取第一行,则应该关闭它。