Привет всем. Я как то давно занимался настройкой класса PDO и периодически у меня срабатывают ошибки которые я не могу проконтролировать и не совсем понимаю. Вот ошибки которые я получаю Код (Text): Fatal error: Call to a member function prepare() on a non-object in /*****/pdo.php on line 33 (строку переделал под пост) Ошибка: SQLSTATE[HY000]: General error: 2006 MySQL server has gone away Ошибка: SQLSTATE[08S01]: Communication link failure: 1053 Server shutdown in progress Вот образец моего класса PHP: define("CHARSET", "utf8"); class Database{ private $host = DB_HOST; private $user = DB_USER; private $pass = DB_PASS; private $dbname = DB_NAME; private $charset = CHARSET; private $dbh; public $error; private $stmt; public function __construct(){ // Установить DSN $dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname . ';charset=' . $this->charset; // Настройка параметров $options = array( PDO::ATTR_PERSISTENT => true, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION //PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" ); // Создает новый объект PDO try{$this->dbh = new PDO($dsn, $this->user, $this->pass, $options);} // Ловим ошибки catch(PDOException $e){$this->error = $e->getMessage()."\r\n";} } public function query($query){ $this->stmt = $this->dbh->prepare($query); } public function bind($param, $value, $type = null){ try{ if (is_null($type)) { switch (true) { case is_int($value): $type = PDO::PARAM_INT; break; case is_bool($value): $type = PDO::PARAM_BOOL; break; case is_null($value): $type = PDO::PARAM_NULL; break; default: $type = PDO::PARAM_STR; } } $this->stmt->bindValue($param, $value, $type); }catch(PDOException $e){$this->error = $e->getMessage()."\r\n";} } public function execute(){//Запускает подготовленный запрос на выполнение try{ return $this->stmt->execute(); }catch(PDOException $e){$this->error = $e->getMessage()."\r\n";} } public function resultset(){//Возвращает массив, содержащий все строки результирующего набора try{ $this->execute(); return $this->stmt->fetchAll(PDO::FETCH_BOTH); }catch(PDOException $e){$this->error = $e->getMessage()."\r\n";} } public function single(){//Извлечение следующей строки из результирующего набора try{ $this->execute(); return $this->stmt->fetch(PDO::FETCH_BOTH); }catch(PDOException $e){$this->error = $e->getMessage()."\r\n";} } public function rowCount(){//Возвращает количество строк, модифицированных последним SQL запросом return $this->stmt->rowCount(); } public function lastInsertId(){//возвращает последним добавленным идентификатором в виде строки return $this->dbh->lastInsertId(); } public function beginTransaction(){//начать транзакцию return $this->dbh->beginTransaction(); } public function endTransaction(){//Для завершения транзакции и зафиксировать изменения return $this->dbh->commit(); } public function cancelTransaction(){//Чтобы отменить транзакцию и выполнить откат изменений return $this->dbh->rollBack(); } public function debugDumpParams(){//Параметры , методы Дебютный Dump сбрасывает информацию , которая содержится в подготовленном заявлении. return $this->stmt->debugDumpParams(); } public function InsertId(){//Получаем ID транзакции записи INSERT return $this->lastInsertId(); } } Как их подправить ??? И у PDO есть такое понимает как закрытые подключения ?