當前位置: 首頁> 最新文章列表> 用while 循環配合fetch_assoc() 正確遍歷查詢結果

用while 循環配合fetch_assoc() 正確遍歷查詢結果

M66 2025-06-03

在使用PHP 進行MySQL 數據庫操作時, mysqli擴展是最常用的工具之一。特別是在處理查詢結果時, mysqli_result對象、 fetch_assoc()方法以及while循環的配合使用,是一種高效且常見的遍歷方式。本文將詳細介紹如何正確使用它們,並給出注意事項和示例代碼。

1?? 什麼是mysqli_result

當你用mysqli_query()執行一個SELECT查詢時,返回的結果是一個mysqli_result對象。這個對象包含了查詢返回的所有行數據。要訪問這些數據,你需要用專門的方法,比如fetch_assoc()

2?? fetch_assoc()是什麼?

fetch_assoc()mysqli_result提供的方法,用於從結果集中取出下一行,並返回一個關聯數組,數組的鍵是字段名,值是對應的字段值。每次調用會向下移動一行,直到沒有更多行返回null

3?? 使用while 循環遍歷查詢結果

一般來說,我們會用一個while循環,結合fetch_assoc() ,逐行獲取結果集中的數據。這是因為fetch_assoc()每次只返回一行,需要不斷調用才能取完所有行。

示例代碼:

 <?php
// 連接數據庫
$mysqli = new mysqli('localhost', 'username', 'password', 'database');

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

// 執行查詢
$sql = "SELECT id, name, email FROM users";
$result = $mysqli->query($sql);

if ($result instanceof mysqli_result) {
    // 遍歷查詢結果
    while ($row = $result->fetch_assoc()) {
        echo 'ID: ' . $row['id'] . '<br>';
        echo '姓名: ' . $row['name'] . '<br>';
        echo '郵箱: ' . $row['email'] . '<br>';
        echo '<a href="https://m66.net/user/' . $row['id'] . '">查看詳情</a><br><br>';
    }

    // 釋放結果集
    $result->free();
} else {
    echo '查詢失敗: ' . $mysqli->error;
}

// 關閉連接
$mysqli->close();
?>

4?? 注意事項

?檢查查詢是否成功<br> 在調用$result->fetch_assoc()之前,先確保$result確實是一個mysqli_result對象,而不是fals e

?釋放結果集<br> 遍歷完後,調用$result->free()釋放資源,避免內存洩漏

?關閉數據庫連接<br> 使用完數據庫後,調用$mysqli->close()關閉連接

?防止SQL 注入<br> 如果查詢中涉及用戶輸入,強烈建議使用預處理語句( prepar e + bind_para m ) 而不是直接拼接字符串