【问题标题】:CodeIgniter MSSQL connectionCodeIgniter MSSQL 连接
【发布时间】: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


【解决方案1】:

对于 x86 win 下载 http://www.microsoft.com/en-us/download/details.aspx?id=20098 以用于:

$db['default']['dbdriver'] = 'sqlsrv';
use the php_sqlsrv_XX_ts_vcX.dll in php.ini extension

如果您的网络服务器和数据库服务器与您的应用不在同一台服务器上,请安装:

http://go.microsoft.com/fwlink/?LinkID=188400&clcid=0x409

对于 linux 作为网络服务器:
$db['default']['dbdriver'] = 'mssql';

download & install = php5-sybase + freetds
<br/>edit /usr/local/etc/freetds.conf
<br/>create pdo_dblib.so & php_mssql.so (if not allready exist on your extension dir), and apply to php.ini

sudo /etc/init.d/apache2 restart

别忘了允许连接到您的数据库(mssql 的默认端口是 1433)

【讨论】:

    【解决方案2】:

    您为 SQLSRV 驱动程序显示的错误意味着 DLL 永远不会加载。你的 php_info() 说什么?

    另外,您是否安装了 SQL Server Native Access Client (SNAC) 10? SQLSRV 驱动程序需要它。

    【讨论】:

    • 谢谢,这是解决问题的垫脚石。我发现问题出在 CodeIgniter 的内置 ODBC 驱动程序上,它在表名周围添加了撇号。
    猜你喜欢
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 2020-10-08
    • 2016-10-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多