Thinkphp使用PDO方式连接MSSQL2000、sqlserver数据库的方法,PHP版本是PHP5.2

最近公司的一个项目需要PHP结合sqlserver2000开发,发现Thinkphp是个不错的php框架,于是折腾了起来。

但是发现Thinkphp对mssql2000数据库进行操作出现了很多问题,在查了N多资料与N次尝试后,总算是得到解决,现在把方法分享一下。

Thinkphp是国内比便流行的wamp开发框架,这里就不多介绍了。


开始用的是wamp的php5.3的,怎么试都不行,Thinkphp本身对sql2000也不是很支持,集成的数据库驱动也是sql2005的,最后发现对sql2000都支持都不是很好。转下把php降到php5.2.9,开启extension=php_pdo_mssql.dll,否则用下面的pdo连接会提示 “could not find driver”  启动pdo连接,如下设置:
conf.php里设置如下,注意这段是错误的配置
//PDO连接方式
‘DB_TYPE’ => ‘pdo’, // 数据库类型
‘DB_USER’ => ‘aa’, // 用户名
‘DB_PWD’ => ‘aa’, // 密码
‘DB_PREFIX’ => ‘ct_’, // 数据库表前缀
‘DB_DSN’    => ‘mssql:host=localhost;dbname=ctphp;charset=gb2312′,
最后连接正常,却提示
由于目前PDO暂时不能完美支持MSSQL 请使用官方的MSSQL驱动
开始不明白它的意思,后了想了想这个官方可能指的是微软mssql。于是再找资料,结果下面一段的资料很有用。
windows系统下,PHP5.3以上的版本已经不支持mssql扩展,所以如果你需要和sql server通信需要到http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx点get it,就会跳到http://www.microsoft.com/en-us/download/details.aspx?id=20098自行下载微软提供的The SQL Server Driver for PHP。我这里下载的是SQLSRV20.EXE这是一个自解压文件,解压后会得到以下几个文件:
php_sqlsrv_52_nts_vc6.dll
php_sqlsrv_52_ts_vc6.dll
php_sqlsrv_53_nts_vc6.dll
php_sqlsrv_53_nts_vc9.dll
php_sqlsrv_53_ts_vc6.dll
php_sqlsrv_53_ts_vc9.dll
php_sqlsrv_license.rtf
SQLServerDriverForPHP.chm
 


SQLServerDriverForPHP_Readme.htm
其中,52,53表示PHP的5.2.X和5.3.X的版本;nts表示非线和安全,ts表示线程安全;vc6表示使用Apache作为Web Server,vc9表示使用IIS作为Web Server。
根据您的配置,将相应的DLL文件拷贝到php安装目录的ext文件夹中,接下来打开php.ini,添加以下语句打开php_sqlsrv和php_pdo_sqlsrv扩展:
由于用的是pdo,就在php.inij里的extension一节加下入面文字
—————————————————————-
extension=php_pdo_sqlsrv_52_ts_vc6.dll
—————————————————————
这里的52表示的是php5.2,如果你的是5.3版,就改成53,如果你的PHP版本是线程安全的,那么你的PHP安装目录下应该有一个php5ts.dll,与这里的两行语句对应,如果是php5nts.dll,那么上面的语句应该是:
—————————————————————-
extension=php_pdo_sqlsrv_53_nts_vc6.dll
————————————————————
压缩包里有各个版本对于的dll文件,大家可以去仔细核查。
开启扩展后,重启apache,这样就可以连接sqlserver了,但是还有一点要注意,如果你没有安装Microsoft SQL Server 2008 R2 Native Client,必须去http://msdn.microsoft.com/en-us/library/cc296170(SQL.90).aspx下载安装,因为微软的这个扩展包需要这个支持。
最后连接是有了。不过根据提示都可以搞定,发现它的DSN连接要稍稍改正。具体看下面的全部数据库相关参数配置。
<?php
return array(
//PDO连接方式
‘DB_TYPE’ => ‘pdo’, // 数据库类型
‘DB_USER’ => ‘aa’, // 用户名
‘DB_PWD’ => ‘aa’, // 密码
‘DB_PREFIX’ => ‘ct_’, // 数据库表前缀
‘DB_DSN’ => ‘sqlsrv:Server=localhost;Database=ctphp’,//服务器名称用的不是host而是Server,数据库名称不是Data而是Database.可以在先前下载的文件SQLServerDriverForPHP.chm里找到
);
?>
看php关于 mssql的pdo连接手册如下
$c = new PDO(“sqlsrv:Server=localhost,1521;Database=testdb”, “UserName”, “Password”);


本文来源于淘福网论坛 http://taofucn.com/vps/

你可能感兴趣的:(开发,thinkphp,资料)