當前位置: 首頁> 最新文章列表> mysql_fetch_array 和foreach 循環的結合使用方法

mysql_fetch_array 和foreach 循環的結合使用方法

gitbox 2025-05-29

1. mysql_fetch_array的基本用法

mysql_fetch_array函數從結果集中取得一行作為數組返回,默認返回同時包含關聯和索引的數組:

 $result = mysql_query("SELECT * FROM users");
while ($row = mysql_fetch_array($result)) {
    print_r($row);
}

這裡的$row是每次循環取得的一條記錄,類型是數組。

2. foreach遍歷單條記錄的數組

當你從mysql_fetch_array中得到一條記錄時,通常會用foreach遍歷這一條數據的所有字段:

 while ($row = mysql_fetch_array($result)) {
    foreach ($row as $key => $value) {
        echo "$key => $value<br>";
    }
}

這種寫法是對的,因為$row本身是數組。

3. 不能直接對查詢結果用foreach

注意, mysql_fetch_array返回的是單條記錄,不能直接對查詢結果資源使用foreach

 foreach ($result as $row) {
    // 錯誤用法,$result是資源,不是數組
}

這種寫法是錯誤的,會導致報錯。

4. 正確結合方式:先用while循環讀取所有數據到數組,再用foreach遍歷

如果想用foreach遍歷所有記錄,常用做法是先將結果全部讀取到一個數組,然後遍歷:

 $rows = [];
while ($row = mysql_fetch_array($result)) {
    $rows[] = $row;
}

foreach ($rows as $record) {
    // 處理每條記錄
    echo $record['username'] . "<br>";
}

這樣,你就可以在foreach中方便地處理所有記錄。

5. 使用MYSQL_ASSOC避免數據冗餘

默認mysql_fetch_array返回的數組既有數字索引,也有關聯索引,造成數據冗餘。建議只取關聯數組:

 while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    // $row只包含關聯數組
}

這樣,數組更簡潔, foreach遍歷更方便。

6. 示例完整代碼

<?php
// 連接數據庫
$link = mysql_connect("gitbox.net", "username", "password");
mysql_select_db("testdb", $link);

// 查詢數據
$result = mysql_query("SELECT id, username, email FROM users");

// 讀取所有數據
$rows = [];
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
    $rows[] = $row;
}

// 使用foreach遍歷所有記錄
foreach ($rows as $record) {
    echo "用戶ID: " . $record['id'] . "<br>";
    echo "用戶名: " . $record['username'] . "<br>";
    echo "郵箱: " . $record['email'] . "<br><hr>";
}

// 關閉連接
mysql_close($link);
?>