本文大量参考了http://wuyuehai.blog.51cto.com/1945567/935361的文章内容,
但是经过本人实际测试,修改和完善了一些内容,特此注明。
ThinkPHP3.1.3配合php5.3(nts)
PHP的SQLServer驱动由微软提供。只有 SQLSRV20才支持SQLServer2000, SQLSRV30及以上版本需要更新的SQLServer。
SQLSRV20支持PHP5.3、PHP5.2。
所以我选择 Apache2.4 + php5.3n(ts) + ThinkPHP3.2.3 + SQLSRV20
php n(ts)版本属于非线程安全版本,但是在windows下运行效率高
第一步 下载
1、去 apache 官网下载Apache2.4。
2、去 http://windows.php.net/downloads/releases/archives/ 下载 PHP5.3.29 。
3、去 http://www.thinkphp.cn/down.html 下载ThinkPHP3.2.3完整版。
4、去 https://www.microsoft.com/en-us/download/details.aspx?id=20098 下载 SQLSRV20 。
5、去 http://go.microsoft.com/fwlink/?LinkID=188400&clcid=0x409 下载sqlncli.msi SQL Server 2008 Native Client R2
注:对于新手,step1和step2的安装可以使用整合工具 phpstudy。php的版本选择php5.3n,apache只要能支持就行了,不一定要2.4
第二步 环境搭建
1、Apache2.4 + PHP5.3n 配合设置,网上有很多文章,不再此处详述。
2、将 thinkphp_3.2.3_full.zip 解压后拷贝到网站根目录。
3、运行SQLSRV20.EXE,释放到本地临时目录。打开该目录,找到php_pdo_sqlsrv_53_nts_vc9.dll、php_sqlsrv_53_nts_vc9.dll,拷贝到php的ext目录。
4、修改php.ini,增加下面两句
extension=php_pdo_sqlsrv_53_nts_vc9.dll
extension=php_sqlsrv_53_nts_vc9.dll
5、运行sqlncli.msi ,安装SQL Server Native Client 2008 R2
第三步 项目配置
修改本项目config.php,增加如下内容
'DB_TYPE'=> 'pdo',
// 注意DSN的配置针对不同的数据库有所区别 请参考PHP手册PDO类库部分
'DB_TYPE' => 'pdo', // 数据库类型
'DB_NAME' => 'pubs', // 数据库名
'DB_USER' => 'sa', // 用户名
'DB_PWD' => 'sa', // 密码
'DB_DSN'=> 'sqlsrv:Server=localhost;database=pubs',
测试例子
$Model = M('authors');
$data = $Model->find();
var_dump($data);
输出结果
array(9) {
["au_id"]=>
string(11) "172-32-1176"
["au_lname"]=>
string(5) "White"
["au_fname"]=>
string(7) "Johnson"
["phone"]=>
string(12) "408 496-7223"
["address"]=>
string(15) "10932 Bigge Rd."
["city"]=>
string(10) "Menlo Park"
["state"]=>
string(2) "CA"
["zip"]=>
string(5) "94025"
["contract"]=>
string(1) "1"
}
注:之所以使用pdo方式连接,而不是直接使用thinkphp提供mssql方式连接,是因为 由于sqlserver2000不支持row_number()函数(可能还有一些其它的兼容问题),而tp3中对应的sqlserver驱动哭使用了row_number()等高版本 sqlserver(2005及以上版本)才具备的函数,因此,使用pdo方式让tp3.1+sqlserv2000的组合,能够充分利用tp的便利性,减少重复劳动。 |