首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 連接 Microsoft SQL Server 完整指南(含 PDO 現代寫法)

     編輯:PHP 綜合知識

舊版 mssql 擴充套件(已棄用)

早期 PHP 使用 php_mssql.dll,需在 php.ini 啟用。但此擴充套件自 PHP 7.0 起已移除,不建議新專案使用。僅供維護舊系統參考:

$conn = mssql_connect("主機名或IP", "用戶名", "密碼");
if ($conn) echo "連線成功";
mssql_select_db("dbname");
$rs = mssql_query("SELECT TOP 1 id, username FROM tbname", $conn);
if ($row = mssql_fetch_array($rs)) {
    $id = $row[0];
    $username = $row[1];
}
mssql_free_result($rs);
mssql_close($conn);

現代解決方案:PDO_SQLSRV / SQLSRV

微軟官方提供 Microsoft Drivers for PHP for SQL Server,支援 PHP 7.1+,功能完整且持續更新。

安裝步驟

  1. 下載對應 PHP 版本的 pdo_sqlsrv 與 sqlsrv DLL(或透過 PECL 安裝)。
  2. 於 php.ini 加入:
    extension=pdo_sqlsrv
    extension=sqlsrv
  3. 重啟 Web 伺服器/PHP-FPM。

PDO 連線範例

try {
    $dsn = "sqlsrv:Server=localhost;Database=testdb";
    $pdo = new PDO($dsn, 'username', 'password', [
        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
        PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    ]);
    echo "連線成功";
} catch (PDOException $e) {
    die("連線失敗: " . $e->getMessage());
}

// 查詢
$stmt = $pdo->query("SELECT TOP 1 id, username FROM tbname");
$row = $stmt->fetch();
if ($row) {
    echo "ID: {$row['id']}, Username: {$row['username']}";
}

// 參數化查詢(防 SQL 注入)
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute(['user@example.com']);
$user = $stmt->fetch();

// 新增並取得自動遞增 ID
$pdo->exec("INSERT INTO tbname (username) VALUES ('nv')");
$lastId = $pdo->lastInsertId(); // 需 SQL Server 2005+ 且資料表有 IDENTITY 欄位
echo "新增 ID: $lastId";

sqlsrv 程序式風格

$conn = sqlsrv_connect("localhost", [
    "Database" => "testdb",
    "UID" => "username",
    "PWD" => "password",
    "CharacterSet" => "UTF-8"
]);
if (!$conn) die(print_r(sqlsrv_errors(), true));

$sql = "SELECT * FROM tbname WHERE id = ?";
$stmt = sqlsrv_query($conn, $sql, [1]);
if ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) {
    print_r($row);
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);

常見問題與提示

  • 驅動版本對應:嚴格對應 PHP 版本(TS/NTS)、架構(x86/x64)與 SQL Server 版本。
  • 連線字串:支援 Server=host,port、Encrypt=1、TrustServerCertificate=1 等選項。
  • 資料型別:datetime、decimal、uniqueidentifier 等會自動轉為 PHP 物件或字串。
  • 交易控制:PDO 使用 beginTransaction()/commit()/rollBack()。

遷移建議

若維護舊專案,建議逐步改寫為 PDO,統一資料存取層,提升安全性與可維護性。新專務必使用官方驅動。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved