假設存在 mssql.class.php 封裝類,提供以下核心方法:
__construct($dsn) / config($dsn):連接配置select_db($dbname):選擇數據庫execute($sql) / query($sql):執行無/有結果集 SQLfetch_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() | 關聯+數字索引 | 通用業務、字段名可讀性優先 |
<?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_sqlsrv 或 pdo_dblib (FreeTDS)$stmt = null / unset($rs)掌握基礎調用流程,平滑遷移至現代 PDO 技術棧。