【发布时间】:2010-12-28 06:41:15
【问题描述】:
我为我正在处理的项目创建了一个简单的 MySQLi 类,以使从数据库中提取和推送到数据库变得更容易和更流线化。 (也是为了更熟悉 PHP 中的 OOP)
我一直遇到的一个问题是努力使其尽可能高效。我尝试关闭/释放每个查询/语句/结果集。在这样做时,我经常收到以下错误:
Warning: mysqli_result::close(): Couldn't fetch mysqli_result
我想我得到了上面的信息,因为它试图连续两次关闭查询。
目前我的班级可以做出准备好的和未准备好的陈述。所以我尝试在 2 个地方关闭查询/语句。我在准备一个语句时检查我是否已经准备了一个语句,如果是,我需要在创建新语句之前关闭旧语句,最后在类的析构函数中。
我意识到我可以在提取并存储结果后关闭查询/语句,但这似乎很混乱,原因有几个。一方面,它消除了重复使用准备好的语句的可能性。以及不允许我在查询运行后提取有关查询的一些信息,例如受影响的行等。
我知道我可以只为每个查询存储此信息,但似乎解决此问题的正确方法是在我需要创建另一个查询/语句时关闭/释放查询/语句,然后再次在脚本的末尾。
我曾尝试环顾四周并阅读有关如何正确处理此任务的信息,但我无法提出任何建议。
所以我的问题是,是否有办法测试查询或语句是否需要关闭或释放?或者有没有更好的方法我应该尝试解决这个问题?
感谢任何人提供的任何帮助或见解。
【问题讨论】:
标签: php mysql mysqli prepared-statement