Неустранимая ошибка: вызов неопределенного метода PDO :: close () - PullRequest
1 голос
/ 24 апреля 2011

Я получил эту ошибку, и строка была такой:

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

Я использую PDO, это проблема, драйвер PDO не распознает эту функцию?Если да, то каков его эквивалент в PDO?

Ответы [ 6 ]

9 голосов
/ 24 апреля 2011

Соединение PDO закрывается с помощью , уничтожая его объект:

Соединение остается активным в течение всего времени жизни этого объекта PDO. Чтобы закрыть соединение, вам нужно уничтожить объект, убедившись, что все оставшиеся ссылки на него удалены - вы делаете это, присваивая NULL переменной, которая содержит объект. Если вы не сделаете этого явно, PHP автоматически закроет соединение, когда ваш скрипт завершится.

так

$this->db = null;

должно работать.

2 голосов
/ 31 августа 2012

Установка переменной PDO на ноль закрывает соединение и освобождает всю связанную память.

Альтернативой является использование closeCursor для закрытия соединения с сервером, но оставление объекта PDO вокруг.

" closeCursor освобождает соединение с сервером, чтобы можно было выполнить другие операторы SQL, но оставляет оператор в состоянии, позволяющем выполнить его снова."

Это означает, что вы можете продолжать выполнять fetch () и др., Даже если соединение было освобождено.

Опять-таки, не то же самое, что mysql_close (), но тем не менее невероятно полезно.

1 голос
/ 24 апреля 2011

Вы закрываете его, помещая ручку в 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;
?>
1 голос
/ 24 апреля 2011

PDO не имеет явной функции закрытия. Вы можете просто сделать

$this->db = null

уничтожить объект, который автоматически очистит соединения.

0 голосов
/ 24 апреля 2011

PDO не имеет метода закрытия. Я думаю, вы можете попытаться сбросить $ this-> db, это отключить автоматически

0 голосов
/ 24 апреля 2011

У PDO нет метода закрытия. Чтобы разрушить соединение, которое представляет объект PDO, уничтожьте все ссылки на сам объект с помощью unset ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...