用户
 找回密码
 入住 CI 中国社区
搜索
查看: 5880|回复: 3
收起左侧

[数据库] 实测通过wamp+SqlServer2005将CI连接到mssql

[复制链接]
发表于 2014-11-6 21:46:51 | 显示全部楼层 |阅读模式
本帖最后由 reallow 于 2014-11-6 22:04 编辑

很多朋友讨论CI使用sqlserver数据库,本人经过多次试验,参考多位网络上的方法,终于实现,网络上很多讨论使用php_mssql.dll来连接SqlServer数据库,但5.3版本已经不支持该方法,微软提供了相应的驱动,
首先参考http://blog.csdn.net/yeqiufeng/article/details/21486553

该文章提出的6个步骤我都做了,但不确认是否都是必须。个人认为前三部都需要做的,
本人php.ini中写的是
[PHP_PDO_SQLSRV]
extension=php_pdo_sqlsrv_54_ts.dll
[PHP_SQLSRV]
extension=php_sqlsrv_54_ts.dll上面dll文件ts表示线程安全,sqlsrv30.exe解开后还有后缀为_nts.dll的表示非线程安全,可以在phpinfo里面查看Thread Safety项
如果是enabled表示线程安全。
使用了SQLSRV30.EXE,
wamp的php版本是5.4.3
sql使用的是2005
下面我觉得是大家最关心的是CI中database的写法。
原database配置如下,
PHP复制代码
 
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '123456';
$db['default']['database'] = 'niudada';
$db['default']['dbdriver'] = 'mysql';
$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;
 
复制代码


如果只使用SqlServer可将默认设置如下

PHP复制代码
 
$db['default']['hostname'] = "192.168.79.129";//这里只需要地址
$db['default']['username'] = "sa";
$db['default']['password'] = "sa";
$db['default']['database'] = "test";
$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";
 
复制代码




如果使用扩展数据库可如下
PHP复制代码
 
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = 'root';
$db['default']['password'] = '123456';
$db['default']['database'] = 'test';
$db['default']['dbdriver'] = 'mysql';
$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;
 
$db['sqlserver']['hostname'] = "192.168.79.129";
$db['sqlserver']['username'] = "sa";
$db['sqlserver']['password'] = "sa";
$db['sqlserver']['database'] = "test";
$db['sqlserver']['dbdriver'] = "sqlsrv";
$db['sqlserver']['dbprefix'] = "";
$db['sqlserver']['pconnect'] = FALSE;
$db['sqlserver']['db_debug'] = TRUE;
$db['sqlserver']['cache_on'] = FALSE;
$db['sqlserver']['cachedir'] = "";
$db['sqlserver']['char_set'] = "utf8";
$db['sqlserver']['dbcollat'] = "utf8_general_ci";
 
复制代码

在控制器里使用数据库,如默认设置为mssql写法与mysql一样
PHP复制代码
 
$query = $this->db->query("select * from test1");  
return $query->result();
 
复制代码


如用的扩展数据库则
PHP复制代码
 
$DB_2 = $this->load->database('sqlserver', TRUE);
$query = $DB_2->query("select * from test1");
 return $query->result();
 
复制代码


如果您的php版本和mssql版本与我的不同,参考http://www.sodone.com/php-connection-sql-server/该文章提到了关于php版本与sqlsrv驱动的对应关系,本人尚未测试仅供参考。
希望大家能够成功!!!






评分

参与人数 1威望 +1 收起 理由
aqxinzhuan + 1 很给力!

查看全部评分

发表于 2014-11-10 15:18:52 | 显示全部楼层
不错哦,让你先总结了
 楼主| 发表于 2015-2-15 11:07:42 | 显示全部楼层
通过实测,发现PHP5.4 与 sqlserver 连接需要安装Microsoft SQL Server 2012 Native Client.msi到php服务器上,并且只适合win7、win8、server2008系统。所以需要用php5.3的应下载相应的dll驱动,则可使用到winxp、server2003系统。
发表于 2015-10-7 19:30:56 | 显示全部楼层
好文章 我正在弄这该死的sqlserver

本版积分规则