Соединение с базой данных MSSQL из PHP (проблема с соединением sqlsrv_close) - PullRequest
0 голосов
/ 30 ноября 2011

Для подключения базы данных от PHP к MSSQL мне пришлось создать следующий код.Может кто-нибудь подсказать мне, работает ли функция __destruct () в моем коде автоматически и закрывает соединение с БД или нет?Вот мой код:

<?php
    class db{
        private $connection;
        private $server, $username, $password, $database, $charset;

        public function __construct($server, $username, $password, $database, $charset){
            $this->server = $server;
            $this->username = $username;
            $this->password = $password;
            $this->database = $database;
            $this->charset = $charset;

            $connectionInfo = array('UID'=>$this->username,
                                    'PWD'=>$this->password,
                                    'Database'=>$this->database,
                                    'CharacterSet'=>$this->charset);

            $this->connection = sqlsrv_connect($this->server, $connectionInfo);

            if ($this->connection === false){
                echo '<h2>Unable to connect to database</h2><br/>';
                die (print_r(sqlsrv_errors(), true));
            };
        }

        public function __destruct(){
            sqlsrv_close($this->connection);
        }

        public function query($query, $params=null){
            $result = sqlsrv_query($this->connection, $query, $params);

            if (!$result){
                echo 'Error in statement execution.\n';
                die(print_r(sqlsrv_errors(), true));
            }

            return $result;
        }
    }

1 Ответ

1 голос
/ 30 ноября 2011

Ваше соединение будет закрыто, кроме случаев, когда метод __destruct не вызывается. Следующие сценарии приводят к невозможности выполнения __destruct:

  • Если в другом деструкторе вызывается «выход»
  • В зависимости от версии PHP: если «exit» вызывается в функции «register_shutdown_function»
  • Если где-то в коде есть ФАТАЛЬНАЯ ошибка
  • Если в другом деструкторе есть исключение
  • Если вы попытаетесь обработать исключение в деструкторе (PHP> = 5.3.0)

Проверьте это https://stackoverflow.com/a/2385581/603256

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