转自 http://www.snippetinfo.net/node/43
MSSQL 2008 with PHP 5.3
最近因為一些安全的問題,要把原本的程式升級到 PHP 5.3。原本想說可以無痛升級的,但是試了才知道,如果資料庫是使用 SQL Server 的話,就會很麻煩了!
在 PHP 5.3 以後就不再支持 SQL Server 了,因為微軟自己跳下來做了!(詳情請看:http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx)
除此之外,原本的 mssql_xxx 的 function 也不再支援,全部換成 sqlsrv_xxx 的Function。(http://www.php.net/manual/en/book.sqlsrv.php)
以下說明一下我的更新方式:
1. 下載 Microsoft Drivers 3.0 for PHP for SQL Server:http://www.microsoft.com/en-us/download/details.aspx?id=20098
在這邊有 SQLSRV20.EXE 以及 SQLSRV30.EXE。其中 SQLSRV30.EXE 是支援 SQL Server 2010 的,所以如果你是使用 SQL Server 2008,就下載 SQLSRV20.EXE 即可。
2. 安裝 SQLSRV for PHP
下載完後解開,將所有的 DLL 複製到 PHP 下的 ext 目錄。然後設定 php.ini。
在我的設定中,我是使用 php_sqlsrv_53_nts_vc9.dll。他的命名規則如下:
- _53_ :PHP 5.3,如果你是用 PHP 5.4 的話,就要使用 _54_ 的 DLL。
- _nts_ :Non-thread-safe,因為我是使用 FastCGI,所以使用 non thread safe,如果你是用 apache module 或是 IIS ISAPI 模式,就要使用 _ts_ 的 DLL。
- _vc9_ :使用 Microsfot Visual C++ v9 Compiler 的。
除了這個之外,如果你連接資料是使用 PDO 的方式,則要使用有 _PDO_ 的 DLL。
3. 設定 PHP.ini
只要加入 extension=php_sqlsrv_53_nts_vc9.dll 即可。
4. PHP 程式
因為我是使用 ADOdb Database Abstraction Library for PHP,所以只要修改 DB type 從 mssql 改為 mssqlnative 即可。