在Xampp中连接sqlsrv

5

我已安装了带有CodeIgniter的Xampp。我想要从CodeIgniter连接到SQL数据库。

我更改了数据库配置文件,并将dbdriver设置为sqlsrv。

$active_group = 'default';
$active_record = TRUE;

$db['default']['hostname'] = 'IP Adress;
$db['default']['username'] = 'DBUserName';
$db['default']['password'] = 'DBPassword';
$db['default']['database'] = 'DBName';
$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;

在我的控制器中,我有以下代码来尝试连接:
$this->load->database();

$db_obj = $this->db->load('sql_Test',TRUE);
$connected = $db_obj->initialize();

if (!$connected){
    $db_obj = $this->d->load('yyy',TRUE);
} 
else{
    die('connected');
}

我遇到了以下错误:

致命错误:在C:\xampp\htdocs\system\database\drivers\sqlsrv\sqlsrv_driver.php的第76行调用未定义的函数sqlsrv_connect()

我在论坛上看到需要更改sqlsrv_driver.php的第89行:

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

我做错了什么?

XAMPP不带MySQL吗?SQLSRV是错误的,你需要'mysql'。 - Gerben Jacobs
1
好的,但是必须连接一个SQL数据库。 - Marten
哦,我现在明白你的意思了。看看我的答案。 - Gerben Jacobs
2个回答

14

编辑 - 首先,您需要下载驱动程序http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx

现在转到您的XAMPP安装并搜索php.dll,它将显示您拥有的正确PHP dll。

1)将以下文件移动到xampp/php/ext目录中。

php_sqlsrv_53_nts_vc9.dll
php_pdo_sqlsrv_53_nts_vc9.dll

2)如果您有php5ts.dll文件,则将以下文件移动到xampp / php / ext目录中。

php_sqlsrv_53_ts_vc9.dll
php_pdo_sqlsrv_53_ts_vc9.dll

如果您的PHP版本编译使用Visual C++ 9.0,则应使用上述文件。否则,请使用以下文件。

1)如果您有php.dll,则将以下文件移动到xampp/php/ext目录中。

php_sqlsrv_53_nts_vc6.dll
php_pdo_sqlsrv_53_nts_vc6.dll

2)如果您有php5ts.dll,则将以下文件移动到xampp / php / ext目录。

php_sqlsrv_53_ts_vc6.dll
php_pdo_sqlsrv_53_ts_vc6.dll

现在我们需要加载我们最近添加的文件。 打开php ini文件并在动态扩展区域中添加以下条目。

extension=php_sqlsrv_53_nts_vc9.dll
extension= php_pdo_sqlsrv_53_nts_vc9 .dll 

保存 ini 文件并重新启动 XAMPP


$check= @$CI->load->database($config, TRUE); // ommit the error
if ($check->call_function('error') !== 0) {
    // Failed to connect
}
我不确定你想要做什么,但在CodeIgniter中,你不需要初始化数据库,CI会自动为你完成。
因此-
$this->load->database();

$db_obj = $this->db->load('SQL_Test',TRUE);
$connected = $db_obj->initialize();

您只需要加载模型并开始执行查询即可。 $this->load->database(); 在控制器中,您需要像这样加载模型-

$this->load->model('my_model');

然后调用您编写查询的模型函数。

$this->my_model->myfunction(); 

我已经建立了一个模型并编写了一个查询,但是我仍然得到相同的错误。 - Marten
@MartenB 好的,现在我明白了。要连接到 sqlsrv,你需要先在 XAMPP 中定义它。等一下,我会编辑我的答案。 - sunny
也许您在加载.dll文件时犯了错误,请再次检查! - sunny
我在运行查询之前就遇到了这个错误,甚至在Xampp启动之前。我会再次检查它 :) - Marten
我已经改了所有的东西,但是仍然出现文件不存在的错误。 - Marten
显示剩余8条评论

1
你的XAMPP设置不支持sqlsrv。 你需要在php.ini中启用它。
extension=php_sqlsrv.dll
extension=php_pdo_sqlsrv.dll

当我重新启动Xampp时,出现以下错误:无法加载动态库php_sqlsrv_53_nts_vc9.dll。这个dll文件也不包含在我从网站(http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx)下载的文件中。 - Marten

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接