我正在开发一个连接到MSSQL数据库的web应用程序。我以前成功地连接到了数据库,没有遇到任何问题,但是我对sqlsrv_driver文件做了一个小的更改。我遇到了以下错误,将更改回滚到原始文件,但仍然存在问题。
我已经确保我安装了相关的MS驱动程序,使用了正确的端口号等,但它返回了这个错误:
Unable to connect to your database server using the provided settings.
Filename: D:...'system'database'DB_driver.php
Line Number: 124
除此之外,我还通过sqlsrv_connect函数在codeigniter的外部进行了连接。这是一个成功的连接,没有错误。
为什么我会出现此错误?
要从PHP->SQLSrv连接,需要安装以下驱动程序:
a。适用于SQL Server PHP的Microsoft驱动程序3.0(SQLSRV30.EXE)
b。Microsoft Visual C++2010可再发行软件包(32位/64位)
c。Microsoft®SQL Server®2012本机客户端(sqlncli.msi)
并在php.ini文件中添加此行:
extension=php_sqlsrv_54_ts.dll
驱动程序sqlsrv有缺陷。打开/system/database/drivers/sqlsrv/sqlsrv_driver.php
要在配置中允许pconnect
,请从更改行89
$this->db_connect(TRUE);
至
return $this->db_connect(TRUE);
如果您想正确使用affected_rows
,则从更改274
行
return @sqlrv_rows_affected($this->conn_id);
至
return @sqlsrv_num_rows($this->result_id);
我在其他地方看到了许多关于如何修复affected_rows
的建议,但如果同时使用sqlsrv进行会话验证,则将_execute
更改为不使用Scrollable
将破坏存储的会话。
我刚刚解决了这个问题。我正在连接到微软Azure 托管的MSSQL
在互联网上做了几项研究工作后,我遵循的步骤如下:
database.cfg:
$db['default']['hostname'] = 'XXXXXXX.database.windows.net';
$db['default']['username'] = 'username';
$db['default']['password'] = 'password';
$db['default']['database'] = 'databasename';
$db['default']['dbdriver'] = 'sqlsrv';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
主要是dbdriver、pcconnect和您应该正确配置的主机名。休息很常见。从azure数据库中获取主机名详细信息。
我还修改了几个系统文件,因为我听说DB驱动程序有问题。
system/database/drivers/sqlsrv/sqlsrv_driver.php
function db_pconnect()
{
//$this->db_connect(TRUE);
return $this->db_connect(TRUE);
}
和
function affected_rows()
{
//return @sqlrv_rows_affected($this->conn_id);
return @sqlsrv_num_rows($this->result_id);
}
我能够连接到数据库并创建数据库应用程序。
希望它能帮助到有需要的人:)