ホームページ  >  記事  >  バックエンド開発  >  最初の結果だけではなく、MySQLi 結果セット内のすべての結果にアクセスするにはどうすればよいですか?

最初の結果だけではなく、MySQLi 結果セット内のすべての結果にアクセスするにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-16 19:02:03651ブラウズ

How do I access all results in a MySQLi result set instead of just the first one?

MySQLi 結果セットの結果にアクセスする方法

クエリ:

select uid from userbase 

ループ:

$i = 0;
$output = mysqli_query($mysqli, "select uid from userbase");
while ($row = $output->fetch_array()) {
    $deviceToken = $row[$i];
    echo $deviceToken;
    $i++;
}

問題

fetch_array() は結果セットから単一行を取得し、インデックス $ を使用しているため、最初の値しか取得できません。 i を使用してその行の要素にアクセスします。ただし、後続の各行のインデックスは異なるため、不正確な結果が得られます。

解決策

結果セットを反復するには、いくつかの解決策があります。

  • 1 つずつフェッチします:

    fetch_array() を使用して一度に 1 行をフェッチし、それに応じてインデックスを調整します:

    while ($row = $output->fetch_array()) {
        echo $row['uid'];
    }
  • MySQLI のイテレータを使用する:

    MySQLi の query() メソッドを反復可能なオブジェクトとして使用すると、次のように結果を反復処理できます。

    foreach ($output as $row) {
        echo $row['uid'];
    }

注:

MYSQLI_ASSOC を使用して連想配列を取得するか、MYSQLI_NUM を使用してインデックス付き配列を結果セットとして取得できます。

ベスト プラクティス

コードが合理化されるため、MySQLi のオブジェクト指向構文を使用することをお勧めします。さらに、値に正しくアクセスするには、反復内の行のインデックスを考慮することが重要です。

以上が最初の結果だけではなく、MySQLi 結果セット内のすべての結果にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。