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

PHP MSSQL 數據庫操作類調用實例:連接、查詢、獲取結果集與資源釋放完整流程

     編輯:PHP 綜合知識

類文件結構假設

假設存在 mssql.class.php 封裝類,提供以下核心方法:

  • __construct($dsn) / config($dsn):連接配置
  • select_db($dbname):選擇數據庫
  • execute($sql) / query($sql):執行無/有結果集 SQL
  • fetch_row($res) / fetch_array($res):獲取行(數字索引/關聯索引)
  • db_close():關閉連接
  • debug = true:開啟調試輸出 SQL

完整調用流程

<?php
require_once("mssql.class.php");

// 1. 實例化並連接 (DSN 格式視類實現而定)
$db = new mssql("dns=aaa;uid=sa;pwd=sa;dbname=test");

// 2. 可選:重新配置連接
$conn = $db->config("dns=aaa;uid=sa;pwd=sa;dbname=test");

// 3. 選擇數據庫
$dbname = $db->select_db("test");

// 4. 開啟調試 (開發環境推薦)
$db->debug = true;

// 5. 執行無結果集 SQL (INSERT/UPDATE/DELETE)
$db->execute("INSERT INTO test01(name) VALUES('這是一個測試!')");
// 或 $db->exec("");

// 6. 執行查詢並獲取結果集資源
$rs = $db->query("SELECT * FROM test01");

// 7. 方式一:數字索引遍歷 (fetch_row)
echo "<br>數字索引遍歷:<br>";
while ($row = $db->fetch_row($rs)) {
    echo $row[0] . ":" . $row[1] . "<br>";
}

// 8. 方式二:關聯索引遍歷 (fetch_array) - 推薦
$rs2 = $db->query("SELECT * FROM test01");
echo "<br>關聯索引遍歷:<br>";
while ($row = $db->fetch_array($rs2)) {
    echo $row["id"] . ":" . $row["name"] . "<br>";
}

// 9. 釋放資源並關閉連接
$db->db_close();

關鍵方法對比

方法返回適用場景
execute()影響行數/布爾INSERT、UPDATE、DELETE、DDL
query()結果集資源SELECT、SHOW、EXPLAIN
fetch_row()數字索引數組固定列順序、性能極敏感
fetch_array()關聯+數字索引通用業務、字段名可讀性優先

現代化替代:PDO_SQLSRV / PDO_DBLIB

<?php
// 推薦:PDO 統一接口、預處理、異常模式
$dsn = "sqlsrv:Server=localhost;Database=test";
$pdo = new PDO($dsn, "sa", "sa", [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
]);

// 預處理防注入
$stmt = $pdo->prepare("INSERT INTO test01(name) VALUES(?)");
$stmt->execute(["測試數據"]);

// 查詢
$stmt = $pdo->query("SELECT * FROM test01");
while ($row = $stmt->fetch()) {
    echo $row['id'] . ":" . $row['name'] . "<br>";
}

遷移建議

  • 舊項目維護:繼續使用封裝類,確保 mssql.class.php 內部用 sqlsrv_* 函數 (PHP 5.3+)
  • 新項目/重構:直接使用 PDO,標準化、生態豐富、框架原生支持
  • Linux 環境:安裝 pdo_sqlsrv 或 pdo_dblib (FreeTDS)

資源管理鐵律

  1. 盡早關閉結果集:$stmt = null / unset($rs)
  2. 腳本結束自動清理,但長運行腳本必須顯式釋放
  3. 連接池場景:交還池而非關閉

掌握基礎調用流程,平滑遷移至現代 PDO 技術棧。

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