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

ADODB_Lite 實戰替代方案:GetRows() 取代 FetchRow() 的陣列處理技巧

     編輯:PHP 綜合知識

背景

完整版 ADODB 在某些主機不支援,改用 ADODB_Lite 發現缺少 FetchRow() 方法。官方建議使用 GetRows() 替代,但回傳的是二維陣列,需注意處理。

GetRows() 回傳結構

$rs = $conn->Execute('SELECT * FROM users');
$allRows = $rs->GetRows(); // 或 $rs->GetRows(10) 限制筆數

// 結構:
// [
//   [0] => ['id'=>1, 'name'=>'Alice', 'email'=>'a@b.c'],
//   [1] => ['id'=>2, 'name'=>'Bob',   'email'=>'b@c.d'],
//   ...
// ]

單筆資料取用技巧

// 只需要第一筆
$result = $rs->GetRows(1); // 限制 1 筆,效能較好
if ($result) {
    $row = $result[0]; // 取得關聯陣列
    echo $row['name'];
}

迴圈遍歷範例

$rows = $rs->GetRows();
foreach ($rows as $row) {
    echo $row['id'] . ' - ' . $row['name'] . '<br>';
}
// 釋放資源
$rs->Close();

完整替代對照表

ADODB 完整版ADODB_Lite 替代寫法
$rs->FetchRow()$rs->GetRows(1)[0] ?? null
while (!$rs->EOF) { $row = $rs->fields; $rs->MoveNext(); }foreach ($rs->GetRows() as $row) { ... }
$rs->GetArray()$rs->GetRows() (相同)
$rs->GetAssoc()需自行實作:array_column($rs->GetRows(), null, 'id')

遷移建議

  • 若專案已大量使用 ADODB API,建議封裝一層適配器類,統一對外介面,內部兼容兩種庫
  • 新專務直接使用 PDO,避免第三方抽象層維護風險
  • ADODB_Lite 適合「唯讀、簡單查詢、無事務、無快取」的極輕量場景

總結

GetRows() 回傳二維陣列是 ADODB_Lite 最大的行為差異。掌握 $result[0] 取首筆、foreach 遍歷兩種模式,即可平滑替代 FetchRow()。但長遠來看,標準化於 PDO 才是技術債最低的選擇。

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