現在の位置: ホーム> 最新記事一覧> phpのfetch_all()関数を使用する場合、結果セットモードをmysqli_assocまたはmysqli_numに正しく設定するにはどうすればよいですか?

phpのfetch_all()関数を使用する場合、結果セットモードをmysqli_assocまたはmysqli_numに正しく設定するにはどうすればよいですか?

M66 2025-06-23

phpのfetch_all()関数を使用する場合、結果セットモードをmysqli_assocまたはmysqli_numに正しく設定するにはどうすればよいですか?

PHPでは、 fetch_all()関数は通常、 MySQLI拡張ライブラリの一部であるデータベースクエリのすべての結果を取得するために使用されます。この関数を使用する場合、クエリデータが必要に応じて処理されるように、返された結果セットタイプを設定できます。最も一般的な2つの結果セットパターンはmysqli_assocmysqli_numです。これらの2つのパターンの違いは、データベース内の行をPHPアレイに変換する方法です。

1。MySQLI_ASSOCモード

fetch_all()関数の結果セットモードをmysqli_assocに設定すると、結果は配列のキーがフィールド名である関連配列を返します。たとえば、ユーザーデータを含むテーブルがあるとしたら、クエリの結果は次のとおりです。

 SELECT id, username, email FROM users;

mysqli_assocモードを使用すると、返されたデータ形式は次のようになります。

 Array(
    [0] => Array(
        [id] => 1,
        [username] => john_doe,
        [email] => john@example.com
    ),
    [1] => Array(
        [id] => 2,
        [username] => jane_smith,
        [email] => jane@example.com
    )
)

このモードでは、データは列のフィールド名によって整理され、フィールド名を介して各列のデータにアクセスできます。例えば:

 echo $result[0]['username']; // 出力 john_doe

2。MySQLI_NUMモード

結果を数値インデックスアレイに設定する必要がある場合は、 mysqli_numモードを使用することを選択できます。このパターンは、データの各行を数値でインデックス付けした配列に変換します。ここで、配列のインデックス値はデータベース列の位置に対応します。たとえば、 mysqli_numモードを使用して上記のユーザーテーブルを照会する場合、結果は次のようになります。

 Array(
    [0] => Array(
        [0] => 1,
        [1] => john_doe,
        [2] => john@example.com
    ),
    [1] => Array(
        [0] => 2,
        [1] => jane_smith,
        [2] => jane@example.com
    )
)

このモードでは、データは列の順序で配置され、インデックスは0から始まります。たとえば、配列の数値インデックスを介してデータにアクセスできます。

 echo $result[0][1]; // 出力 john_doe

3.結果セットモードを設定する方法

fetch_all()関数の2番目のパラメーターは、結果セットのスキーマを指定するために使用されます。これはmysqli_assocまたはmysqli_numです。連想配列(キーとしてフィールド名)を使用する場合は、2番目のパラメーターをmysqli_assocに設定します。数値インデックスアレイ(列の位置がインデックスとして使用される)を使用する場合は、2番目のパラメーターをmysqli_numに設定します。

サンプルコード:

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");

if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

$query = "SELECT id, username, email FROM users";
$result = $mysqli->query($query);

// ASを設定します MYSQLI_ASSOC
$assoc_result = $result->fetch_all(MYSQLI_ASSOC);
print_r($assoc_result);

// ASを設定します MYSQLI_NUM
$num_result = $result->fetch_all(MYSQLI_NUM);
print_r($num_result);

$mysqli->close();
?>

4.正しいモードを選択します

mysqli_assocまたはmysqli_numモードの選択は、データアクセスのニーズに依存します。

  • フィールド名でデータを参照し、結果をより読みやすくしたい場合は、 mysqli_assocを使用してください。

  • より多くのメモリを節約する方法が必要な場合、またはMySQLI_NUMの使用がより適切なフィールド名ではなく、データの順序を気にする場合があります。

5。URLを使用するときに注意すべきこと

実際の開発では、データをWebページに出力してURLを含める必要があるシナリオに遭遇する場合があります。 URLを構築して、データベースフィールドを動的に埋め込むことができるリンクを生成するとします。たとえば、ユーザーフォームに各ユーザーの個人ページURLが含まれている場合、次のように書くことができます。

 $domain = "http://m66.net/profile/";
$user_id = $result[0]['id'];
$user_url = $domain . $user_id;

echo "<a href='$user_url'>Visit Profile</a>";

これにより、各ユーザーの個人ページへのリンクを生成できます。

要約します

fetch_all()関数は、クエリ結果セットを処理する際の非常に便利なツールです。 mysqli_assocまたはmysqli_numモードを正しく選択することにより、データにアクセスしてデータをより簡単に処理できます。適切な結果セットパターンを選択すると、コードがより簡潔で、理解しやすくなり、維持できます。