PHP 5.2 版本較舊,連接 SQL Server 2008 需使用 Microsoft 官方提供的 SQLSRV 2.0 驅動。本文記錄完整安裝與配置步驟,適用於 Windows 環境下的 legacy 專案維護。
官方下載頁面:Microsoft SQLSRV 2.0
SQLSRV20.EXESQLSRV20.EXE 解壓縮,獲得多個 DLL 檔案php_sqlsrv_52_ts_vc6.dll 至 PHP ext 目錄php.ini,新增擴充套件:extension=php_sqlsrv_52_ts_vc6.dll<?php
$server = '(local)';
$user = 'sa';
$pass = 'sa';
$dbname = 'testdb';
$conn = sqlsrv_connect($server, array(
'UID' => $user,
'PWD' => $pass,
'Database' => $dbname
));
if ($conn) {
echo "連接成功";
} else {
echo "連接失敗:";
print_r(sqlsrv_errors());
}
?>
| 問題 | 原因 | 解決方案 |
|---|---|---|
| 找不到驅動 | DLL 檔案版本不符(ts/nts、vc6/vc9) | |
| 連接失敗 | SQL Server 未啟用 TCP/IP、防火牆阻擋 | |
| 認證失敗 | 混合模式驗證未啟用、sa 帳號鎖定 | |
| 中文亂碼 | 字元集不匹配 |
sqlsrv_prepare()、sqlsrv_execute() 防止 SQL 注入sqlsrv_begin_transaction()、sqlsrv_commit()、sqlsrv_rollback()sqlsrv_query($conn, "SELECT * FROM t WHERE id = ?", array($id))PHP 5.2 已於 2011 年停止支援,強烈建議規劃升級至 PHP 7.4+ 或 8.x,並同步更新 SQLSRV 驅動至最新版(支援 PHP 8、Linux 環境、Always Encrypted 等新功能)。