【问题标题】:Fatal error: Call to undefined method PDO::close()致命错误:调用未定义的方法 PDO::close()
【发布时间】:2014-03-03 15:31:15
【问题描述】:

我遇到了那个错误,这行是这样的:

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

我用的是PDO,是不是这个问题,PDO驱动不能识别这个功能吗?如果是,它在 PDO 中的等价物是什么?

【问题讨论】:

    标签: php pdo


    【解决方案1】:

    一个 PDO 连接被destroying its object: 关闭

    连接在该 PDO 对象的生命周期内保持活动状态。要关闭连接,您需要通过确保删除对它的所有剩余引用来销毁该对象——您通过将 NULL 分配给保存该对象的变量来做到这一点。如果您没有明确地这样做,PHP 将在您的脚本结束时自动关闭连接。

    所以

    $this->db = null;
    

    应该可以。

    【讨论】:

      【解决方案2】:

      PDO 没有明确的“关闭”功能。你可以简单地做

      $this->db = null
      

      销毁对象,这将自动清理连接。

      【讨论】:

        【解决方案3】:

        您可以通过将句柄置于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】:

          将 PDO 变量设置为 null 会关闭连接并释放所有相关内存。

          另一种方法是使用 closeCursor 关闭与服务器的连接,但保留 PDO 对象。

          "closeCursor 释放与服务器的连接,以便其他 可能会发出 SQL 语句,但会使语句处于以下状态 使其能够再次执行。”

          这意味着您可以继续运行 fetch() 等,即使连接已被释放。

          同样,与 mysql_close() 不同,但仍然非常有用。

          【讨论】:

            【解决方案5】:

            PDO 没有关闭方法。要销毁 PDO 对象表示的连接,请使用 unset() 销毁对对象本身的所有引用。

            【讨论】:

              【解决方案6】:

              PDO 没有关闭方法。我想你可以尝试取消设置 $this->db,这个会自动断开

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-07-13
                • 2015-01-28
                • 2015-05-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多