【问题标题】:CI connect to SQL SERVERCI 连接到 SQL SERVER
【发布时间】:2013-10-16 06:29:33
【问题描述】:

我想连接到 sql server,我的 php 版本是 5.4,我有 MS SQL Server 2008 R2,我使用 PHP Codeigniger 2.1.4 我使用 sqlsrv30.exe 我使用 XAMPP 1.8.2

我更改 database.php 配置

$db['default']['hostname'] = '192.168.5.208';
$db['default']['username'] = 'xxx';
$db['default']['password'] = 'xxx';
$db['default']['database'] = 'xxx';
$db['default']['dbdriver'] = 'sqlsrv';
$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;

我下载了 sqlsrv30.exe。在 php/ext 中安装它

我在 php.ini 文件中添加以下内容:

extension=php_sqlsrv_54_ts.dll

我安装 Native Client 10

我将文件夹 database-driver-sqlsrv 中的 sqlsrv_driver.php 更改为

function db_pconnect() {
        //return $this->db_connect(TRUE);
        return $this->db_connect(TRUE);
    }

我也尝试添加

db['default']['port'] = 1433;

但它仍然无法正常工作。我总是遇到ff。错误:

A Database Error Occurred
Unable to connect to your database server using the provided settings.
Filename: C:\xampp\htdocs\HRM\system\database\DB_driver.php
Line Number: 124

请帮忙...

【问题讨论】:

  • dbdriver 设置为mssql。 CI 中可用的 dbdrivers 列表:mysql, mysqli, postgre, odbc, mssql, sqlite, oci8
  • 大多数人说 mssql 不适用于 php 5.3 及更高版本,所以我使用 sqlsrv,我安装 xampp 1.8.2 并没有找到 mssql.dll 包含..

标签: php sql-server database codeigniter sqlsrv


【解决方案1】:

我的mysql在同一行也有同样的问题,我搜索了很多。它可能是您的“端口”或“自动初始化”。但我的最终解决了服务器中的一些问题。所以检查你的服务器是另一种方式。

【讨论】:

  • 我检查 sql server 端口是 1433 ,并更改 false autoinit ,但它只是在第一次加载时阻止 init db ,并没有解决问题,您解决服务器中的一些问题是什么意思?请帮忙..
  • 很抱歉,这个问题已经被另一个部门解决了。所以我不知道那个问题是什么。
【解决方案2】:

终于弄明白了,添加 die(print_r(sqlsrv_errors(), true));在 DB_driver 上阅读错误日志并解决您的问题,对我来说,因为我只安装了 Native Client 10 而 sqlsrv3.0 需要 Native Client 11。

【讨论】:

  • 当你终于可以得到一些错误输出时,解决方案是显而易见的。非常感谢您的提示!
【解决方案3】:

大约一年前,我遇到了和你一样的麻烦。看看这里的回复,那里的人有一些很好的建议:CodeIgniter MSSQL connection

@StefenWiranata 抱歉,刚刚注意到您评论的第 2 部分 - 我不记得我在哪里进行了更改,但如果您无法解决问题,我可以在今晚尝试查看。我确定 CI 是在 system/database/drivers/odbc/ 中某处的表名周围添加撇号,很可能是在 odbc_driver.php 文件中。

【讨论】:

  • 抱歉给你添麻烦了,我的英语不好,我不明白你的解决方案,我一直在因为这个问题,你用什么? sqlsrv 还是 odbc? “我发现问题出在 CodeIgniter 的内置 ODBC 驱动程序上,它在表名周围添加了撇号。我快速浏览了 odbc_driver.php,更改了引用表的方式”,你改变了什么?请帮忙..
  • @StefenWiranata 在那个例子中我选择了 ODBC,因为我无法让“sqlsrv”在 PHP 5.3 下工作。
  • @StefenWiranata 嘿,伙计,刚刚更新了我的答案以反映您评论的第 2 部分。
  • 谢谢你的帮助,我终于想通了,尝试通过 add die(print_r(sqlsrv_errors(), true)); 来显示 sqlsrv 错误在 DB_driver 上并读取错误日志
猜你喜欢
  • 1970-01-01
  • 2013-05-01
  • 1970-01-01
  • 2014-05-25
  • 2014-12-01
  • 2011-07-28
  • 2015-01-19
  • 2019-06-14
  • 1970-01-01
相关资源
最近更新 更多