我遇到了这个错误,而且这行是:
public function __destruct() {
$this->db->close();
}
我使用PDO,这是问题,PDO驱动程序无法识别此功能吗?如果是,它在PDO中的等价物是什么?
答案 0 :(得分:9)
PDO连接已由destroying its object:
关闭该连接在该PDO对象的生命周期内保持活动状态。要关闭连接,您需要通过确保删除对它的所有剩余引用来销毁对象 - 您可以通过为保存对象的变量赋值来执行此操作。如果您没有明确地执行此操作,PHP将在脚本结束时自动关闭连接。
所以
$this->db = null;
应该有用。
答案 1 :(得分:2)
将PDO变量设置为null将关闭连接并释放所有相关内存。
另一种方法是使用closeCursor关闭与服务器的连接,但保留PDO对象。
“closeCursor释放与服务器的连接,以便其他人 可以发出SQL语句,但将语句保留为该状态 使它能够再次执行。“
这意味着您可以继续运行fetch()等,即使连接已被释放。
同样,与mysql_close()不同,但仍然非常有用。
答案 2 :(得分:1)
PDO没有明确的“关闭”功能。你可以简单地做
$this->db = null
销毁对象,它会自动清理连接。
答案 3 :(得分:1)
通过将句柄放到null
来自php.net:
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
// use the connection here
// and now we're done; close it
$dbh = null;
?>
答案 4 :(得分:0)
PDO没有关闭方法。要销毁PDO对象表示的连接,请使用unset()销毁对象本身的所有引用。
答案 5 :(得分:0)
PDO没有关闭方法。我想你可以尝试取消设置$ this-&gt; db,这会自动断开连接