reallow 发表于 2014-11-6 21:46:51

实测通过wamp+SqlServer2005将CI连接到mssql

本帖最后由 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中写的是

extension=php_pdo_sqlsrv_54_ts.dll

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配置如下,

$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可将默认设置如下


$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";




如果使用扩展数据库可如下

$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一样

$query = $this->db->query("select * from test1");
return $query->result();


如用的扩展数据库则

$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驱动的对应关系,本人尚未测试仅供参考。
希望大家能够成功!!!






aqxinzhuan 发表于 2014-11-10 15:18:52

不错哦,让你先总结了

reallow 发表于 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系统。

sharpmental 发表于 2015-10-7 19:30:56

好文章 我正在弄这该死的sqlserver
页: [1]
查看完整版本: 实测通过wamp+SqlServer2005将CI连接到mssql