ThinkPHP3.1.3以pdo方式连接SQLServer2000

来源:互联网 发布:如何修改淘宝地址 编辑:程序博客网 时间:2024/06/07 16:08

本文大量参考了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的便利性,减少重复劳动。

0 0
原创粉丝点击