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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章