【发布时间】:2012-01-29 23:00:27
【问题描述】:
我正在开发一个 Web 项目,该项目将部署在运行 IIS 7.5 和 PHP 5.3.8 的 64 位 Windows 2008 Server 机器上。系统上的数据库是 Microsoft SQL Server 2008 R2。我正在 CodeIgniter 2.1.0 框架上开发应用程序,但我有点难以将其连接到 SQL Server。
我已尝试同时使用 MSSQL、ODBC 和 SQLSRV 数据库驱动程序,但对于每个不同的驱动程序,我都遇到了三个不同的错误。
这是我的 ODBC 配置:
$db['default']['hostname'] = 'SA';
$db['default']['username'] = 'petre';
$db['default']['password'] = 'start';
$db['default']['database'] = 'petre';
$db['default']['dbdriver'] = 'odbc';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$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;
我在数据源下定义了 SA 的 DNS,我确定用户名和密码都有效,并且服务器接受混合身份验证(Windows + SQL 身份验证)。
我正在自动加载数据库库,对于我访问的任何页面,我都会得到:
Unable to connect to your database server using the provided settings.
Filename: C:\inetpub\wwwroot\system\database\DB_driver.php
Line Number: 124
如果我尝试通过 MSSQL 进行连接,无论如何我都会得到一个空白页面。
如果我尝试使用以下参数使用 SQLSRV:
$db['default']['hostname'] = '127.0.0.1';
$db['default']['username'] = 'petre';
$db['default']['password'] = 'start';
$db['default']['database'] = 'petre';
$db['default']['dbdriver'] = 'sqlsrv';
即使我链接到 php.ini 中的 sqlsrv DLL 文件,我也会收到以下消息:
PHP Fatal error: Call to undefined function sqlsrv_connect() in C:\inetpub\wwwroot\system\database\drivers\sqlsrv\sqlsrv_driver.php on line 76
我一直在阅读旧帖子和不同的观点,但我还没有解决问题。
我只是在寻找单个 DB 驱动程序的解决方案 - 任何让它连接的东西都可以。有人对解决这个问题有什么建议吗?
【问题讨论】:
-
你能使用 PHP 的内置函数来连接 MSSQL 或 ODBC(从而将 CodeIgniter 排除在外)吗?
-
“如果我尝试通过 MSSQL 连接,无论如何我都会得到一个空白页面”听起来像是致命/解析/类似错误,请检查您的 php.ini 以确保记录此类错误在一个文件中,并在您的问题中发布相关的日志行
-
@Crontab 尝试您的解决方案后,我发现问题出在 CodeIgniter 的内置 ODBC 驱动程序上,它在表名周围添加了撇号。我快速浏览了 odbc_driver.php,更改了引用表的方式,从而解决了问题!
-
@PetrePatrasc:很好,很高兴你能找到它!
-
嗨,现在我正面临这个问题。但是我改变了撇号,即使它不起作用。我在 dbdriver 中尝试过 odbc 和 mssql。我正在连接在另一个主机上共享的远程服务器。
标签: php sql sql-server codeigniter odbc