為什麼我只存取 MySQLi 結果集中的第一個值?

Susan Sarandon
發布: 2024-11-19 11:33:02
原創
805 人瀏覽過

Why Am I Only Accessing the First Value in My MySQLi Result Set?

在MySQLi 中迭代結果集

在MySQLi 中處理結果集時,您可能會遇到只能存取第一個值的問題迭代期間。這通常是由於使用 fetch_array() 以及對其行為理解不當造成的。

fetch_array() 的預設行為

預設情況下,fetch_array() 傳回一個具有下列兩種情況的陣列:索引鍵和關聯鍵,稱為MYSQLI_BOTH 。若要指定僅包含索引鍵或關聯鍵的結果集,請分別使用 MYSQLI_NUM 或 MYSQLI_ASSOC。

fetch_array() 的替代方案

而不是依賴fetch_array(),考慮更有效率、簡潔的替代方案:

  • 關聯數組(MYSQLI_ASSOC):使用列名作為鍵存取值:
while ($row = $output->fetch_array(MYSQLI_ASSOC)) {
    echo $row['uid'];
}
登入後複製
  • 索引數組(MYSQLI_NUM): 依索引存取值:
while ($row = $output->fetch_array(MYSQLI_NUM)) {
    echo $row[0];
}
登入後複製
  • 物件導向的迭代:迭代結果設定為可迭代對象,省略fetch_array() 的需要:
foreach ($output as $row) {
    echo $row['uid'];
}
登入後複製

迭代故障排除

使用$i 透過索引鍵遞增不是

[
    0 => [0 => 1, 'uid' => 1],
    1 => [0 => 2, 'uid' => 2],
    2 => [0 => 3, 'uid' => 3]...
]
登入後複製

使用$i 透過索引鍵遞增不是

使用$i 透過索引鍵遞增不是使用$i 透過索引鍵遞增不是使用$i 透過索引鍵遞增不是使用$i 透過索引鍵遞增不是適用於具有關聯鍵的結果集。例如,結果集可能具有以下結構的值:在這種情況下,$row[1] 在後續迭代中將不存在,從而導致問題。

以上是為什麼我只存取 MySQLi 結果集中的第一個值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板