У меня есть эта ошибка, и строка была такой:
public function __destruct() { $this->db->close(); }
Я использую PDO, это проблема, не знает ли драйвер PDO эту функцию? Если да, то каков его эквивалент в PDO?
Соединение PDO закрывается путем уничтожения его объекта:
Соединение остается активным для времени жизни этого объекта PDO. Чтобы закрыть соединение, вам нужно уничтожить объект, убедившись, что все остальные ссылки на него удалены – вы делаете это, назначая NULL переменной, которая содержит объект. Если вы не сделаете это явно, PHP автоматически закроет соединение, когда ваш скрипт закончится.
так
$this->db = null;
должно сработать.
Установка переменной PDO в нуль закрывает соединение и освобождает всю связанную память.
Альтернативой является использование closeCursor для закрытия соединения с сервером, но оставить объект PDO вокруг.
« closeCursor освобождает соединение с сервером, так что могут выдаваться другие операторы SQL, но оставляет оператор в состоянии, которое позволяет ему снова запускаться ».
Это означает, что вы можете продолжить запуск fetch () и др., Хотя соединение было освобождено.
Опять же, не то же самое, что mysql_close (), но тем не менее невероятно полезно.
PDO не имеет явной «закрытой» функции. Вы можете просто сделать
$this->db = null
для уничтожения объекта, который автоматически очистит соединения.
Вы закрываете его, поместив дескриптор в 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; ?>
PDO не имеет близкого метода. Чтобы уничтожить соединение, которое представляет объект PDO, уничтожьте все ссылки на сам объект unset ().
PDO не имеет метода закрытия. я думаю, вы можете попытаться отключить $ this-> db, это автоматически отключается