PHP 透過 mssql_ 系列函數操作 Microsoft SQL Server,需在 Windows 平台執行。本文整理核心函數用法與常見操作模式,適合維護舊版 PHP 專案的開發者參考。
php_mssql.dll 擴展(PHP 5.3+ 官方已移除,建議改用 SQLSRV 或 PDO_SQLSRV)| 函數 | 用途 | 備註 |
|---|---|---|
mssql_connect() | 建立非持久連線 | 回傳連線識別碼 |
mssql_pconnect() | 建立持久連線 | 腳本結束不自動關閉 |
mssql_close() | 關閉連線 | 僅對 mssql_connect 有效 |
mssql_select_db() | 選擇資料庫 | 類似 USE db_name |
| 函數 | 用途 | 回傳值 |
|---|---|---|
mssql_query() | 送出 T-SQL 查詢 | 結果集識別碼 / 布林值 |
mssql_fetch_array() | 取得關聯+數值陣列 | 單筆記錄陣列 |
mssql_fetch_assoc() | 取得關聯陣列 | 單筆記錄陣列 |
mssql_fetch_row() | 取得數值索引陣列 | 單筆記錄陣列 |
mssql_fetch_object() | 取得物件 | 單筆記錄物件 |
mssql_num_rows() | 取得列數 | 整數 |
mssql_num_fields() | 取得欄位數 | 整數 |
mssql_free_result() | 釋放結果集記憶體 | 布林值 |
mssql_data_seek():移動列指標mssql_field_seek():移動欄位指標mssql_fetch_field():取得欄位中繼資料mssql_affected_rows():取得 INSERT/UPDATE/DELETE 影響列數mssql_result():直接取得單一欄位值<?php
// 連線
$conn = mssql_connect('localhost', 'sa', 'password') or die('連線失敗');
mssql_select_db('Northwind', $conn) or die('選擇資料庫失敗');
// 查詢
$sql = "SELECT CustomerID, CompanyName, ContactName FROM Customers WHERE Country = 'UK'";
$result = mssql_query($sql, $conn);
if ($result && mssql_num_rows($result) > 0) {
echo "<table border='1'><tr><th>ID</th><th>公司</th><th>聯絡人</th></tr>";
while ($row = mssql_fetch_assoc($result)) {
echo "<tr><td>{$row['CustomerID']}</td><td>{$row['CompanyName']}</td><td>{$row['ContactName']}</td></tr>";
}
echo "</table>";
} else {
echo "無符合資料";
}
// 清理
mssql_free_result($result);
mssql_close($conn);
?>
PHP 7.0+ 專案請改用 Microsoft 官方驅動:
sqlsrv_ 系列:程序式 API,效能最佳PDO_SQLSRV:PDO 介面,支援參數綁定、預處理語句