1. 下載 AppServ (Apache 2.0 Handler, 內含PHP Version 5.2.6、MySQL 5.0.51a、Apache 2.2.8 ), 安裝並執行
2. 雖然 php 有內建 mssql 的支援函式, 但這個功能並沒有預設開啟, 因此必須修改 C:\Windows\php.ini 將" ;extension=php_mssql.dll" 前面的 ( ; ) 去掉
3. 將 AppServ 下的兩個 dll 檔拷貝到 windows\system32 下: [ AppServ\php5\ntwdblib.dll、AppServ\php5\ext\php_mssql.dll ]
4. 由於 php 所附的 dll 可能是舊版的, 只能支援到 MS SQL 2000 所以必須重新下載 ntwdblib.dll( http://webzila.com/dll/1/ntwdblib.zip ),解壓縮之後並貼到 windows\system32 中覆蓋舊有的檔案
5. 重新啟動 appserv 中的 appache
6. 如果是 MS SQL 2005 以上的版本, 預設的 TCP/IP 和 Named 連線功能是關 閉的, 必須到 MS SQL 上將這兩個功能打開
a. 打開 SQL Server Enterprise Manager 編輯該 SQL Server 的參數 (或是到控制台下的 Administrative Tools 打開 SQL 的管理程式也可以)
b. 點選 “網路設定", 將 “具名管道" 與 TCP/IP 加入後確定即可
7. 測試連線
8.php預設的session不能直接使用,必須至php.ini中,將「output_buffering = Off」,改為「output_buffering = 4096」,不設的話,在php檔為UTF-8編碼下可能會出現以下的訊息 「 cannot send session cache limiter-headers already sent (output start at …………) 」
<html> <head> <title>MS SQL Connection Test</title> </head> <body> <?php $dhcp_dbh = mssql_connect("<your ip>", "<mssql_user>", "<sql_password>") or die("Can't Connect to SQL Server"); print "connection = ".$dhcp_dbh; ?> </body> </html>
====== PART 2 ===============
PHP + MSSQL – Apache 設定
Apache 及 php.ini |
1. 更改 php.ini mssql.secure_connection = On 及 extension=php_mssql.dll (移除 ; )2. SQL Server – 伺服器驗證 : SQL Server 及 Windows 驗證模式3. 將 \php5\ext\php_mssql.dll copy 至下列 folder. C:\Windows\System32\4. 找尋 ntwdblib.dll (版本 2000.80.194.0 或以上), copy 至下列 folder. C:\Windows\System32\ \php5\ \Apache\bin\5. Restart Apache 服務註 : 設定錯誤出現之 error message. Warning: mssql_connect() [function.mssql-connect]: Unable to connect to serve |
php 程式碼 |
<table border="1″ cellpadding="0″ cellspacing="0″><?php $server = ‘(Host Name),(Port No.)’;$con=mssql_connect($server,'(SQL Server User Account Login Name)’,'(SQL Server User Account Password)’);$msdb=mssql_select_db(‘Soccer’,$con);$query = mssql_query(‘SELECT * FROM dbo.Team’);if (!mssql_num_rows($query)) { echo ‘No records found’; }else{ while ($row = mssql_fetch_array($query, MSSQL_NUM)) { echo “<tr>" ; echo “<td>" ; echo $row[0] . “</td><td>" ; echo $row[1] . “</td><td>" ; echo $row[2] . “</td></tr>" ; } }mssql_free_result($query);?></table> |