致命错误:调用未定义的方法PDO :: close()

时间:2011-04-24 19:11:44

标签: php pdo

我遇到了这个错误,而且这行是:

public function __destruct() {
        $this->db->close();
    }

我使用PDO,这是问题,PDO驱动程序无法识别此功能吗?如果是,它在PDO中的等价物是什么?

6 个答案:

答案 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,这会自动断开连接