現在の位置: ホーム> 最新記事一覧> 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。単一のレコードの配列を横断します

mysql_fetch_arrayからレコードを取得すると、通常、このデータのすべてのフィールドを繰り返すためにforeachを使用します。

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

$ row自体は配列であるため、これは正しいです。

3.クエリの結果に直接Eachを使用することはできません

MySQL_FETCH_ARRAYは単一のレコードを返し、結果リソースをクエリするために直接使用できないことに注意してください。

 foreach ($result as $row) {
    // 間違った使用法,$resultそれはリソースです,配列ではありません
}

この書き込み方法は間違っており、エラーが発生します。

4.正しい組み合わせ方法:最初に時間内のループを使用してすべてのデータを配列に読み取り、次に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);
?>