當前位置: 首頁> 最新文章列表> 遍歷mysqli_result 所有結果的正確姿勢

遍歷mysqli_result 所有結果的正確姿勢

M66 2025-05-28

在使用PHP 進行數據庫操作時, mysqli擴展提供了非常方便的函數來連接、查詢以及操作數據庫。 mysqli_result是在執行查詢時返回的結果集對象。本文將介紹如何正確遍歷mysqli_result函數返回的所有結果,以便能夠高效地獲取和處理查詢結果。

1. 連接數據庫

首先,我們需要通過mysqli_connect()函數來連接數據庫。這裡假設你已經具備了基本的MySQL 數據庫操作經驗,下面是一個簡單的數據庫連接示例:

 <?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// 創建連接
$conn = new mysqli($servername, $username, $password, $dbname);

// 檢查連接
if ($conn->connect_error) {
    die("連接失敗: " . $conn->connect_error);
}
?>

2. 執行查詢

連接到數據庫後,我們可以通過mysqli_query()來執行SQL 查詢。假設我們查詢一個名為users的表,並獲取所有用戶的信息:

 $sql = "SELECT id, name, email FROM users";
$result = $conn->query($sql);

此時, $result將是一個mysqli_result對象,包含查詢的所有數據。

3. 使用mysqli_fetch_assoc()遍歷結果

最常見的遍歷mysqli_result返回的結果集的方法是使用mysqli_fetch_assoc()函數。該函數會返回一個關聯數組,每次調用時,它會返回一行數據,並將指針移動到下一行,直到沒有更多數據為止。

 if ($result->num_rows > 0) {
    // 輸出每一行的數據
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. "<br>";
    }
} else {
    echo "0 結果";
}

在這個例子中, mysqli_fetch_assoc()返回的是一個關聯數組,其中數組的鍵是字段名,值是對應字段的值。

4. 使用mysqli_fetch_row()遍歷結果

除了mysqli_fetch_assoc() ,你還可以使用mysqli_fetch_row()來返回一個索引數組,每一行數據的字段值將按順序存放在數組中。使用這種方法時,需要通過索引來訪問各個字段的值。

 if ($result->num_rows > 0) {
    // 輸出每一行的數據
    while($row = $result->fetch_row()) {
        echo "id: " . $row[0] . " - Name: " . $row[1] . " - Email: " . $row[2] . "<br>";
    }
} else {
    echo "0 結果";
}

這裡mysqli_fetch_row()返回的是一個數字索引數組, $row[0]對應的是id字段, $row[1]name$row[2]email

5. 使用mysqli_fetch_object()遍歷結果

如果你更習慣於對象的方式來處理查詢結果,可以使用mysqli_fetch_object() 。它會返回一個對象,每個字段都可以通過對象屬性來訪問。

 if ($result->num_rows > 0) {
    // 輸出每一行的數據
    while($row = $result->fetch_object()) {
        echo "id: " . $row->id . " - Name: " . $row->name . " - Email: " . $row->email . "<br>";
    }
} else {
    echo "0 結果";
}

6. 遍歷所有結果的另一種方式

如果你需要在處理過程中更靈活地操作所有行的數據,可以使用mysqli_fetch_all()函數,它會返回一個包含所有結果的二維數組。

 $allResults = $result->fetch_all(MYSQLI_ASSOC);

foreach ($allResults as $row) {
    echo "id: " . $row["id"] . " - Name: " . $row["name"] . " - Email: " . $row["email"] . "<br>";
}

這裡fetch_all(MYSQLI_ASSOC)會返回所有結果作為一個關聯數組。

7. 關閉連接

操作完成後,記得關閉數據庫連接:

 $conn->close();

總結

通過上述幾種方式,我們可以遍歷mysqli_result函數返回的所有結果。具體使用哪種方式取決於個人的需求和數據的處理方式。如果你希望通過關聯數組獲取字段,可以使用mysqli_fetch_assoc() ;如果更傾向於對象的方式,可以選擇mysqli_fetch_object() ;如果你需要同時處理所有行的數據,可以使用mysqli_fetch_all()

記住,數據庫連接操作後要及時關閉連接,以保證資源的釋放。