来自PHP的MSSQL数据库连接(sqlsrv_close连接问题)
问题描述:
对于从PHP到MSSQL的数据库连接,我创建了以下代码。有人可以建议我,我的代码中的__destruct()函数自动工作并关闭数据库连接吗?以下是我的代码:来自PHP的MSSQL数据库连接(sqlsrv_close连接问题)
<?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;
}
}
答
除非没有调用__destruct
方法,否则您的连接将被关闭。在以下情况下会导致__destruct
不执行:
- 如果“退出”之称的另一个析构函数
- 根据PHP版本:如果“退出”之称的“register_shutdown_function”功能
- 如果有一个致命的错误某处代码
- 如果在另一个析构函数抛出异常
- 如果您尝试来处理析构函数的异常(PHP> = 5.3.0)
是有可能性,析构函数关闭连接时,对象的工作完成 –
我凭什么把明确的结果在这里... –
你可以制作一个功能,把密切码它并在页面末尾调用该函数... –