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

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

Barbara Streisand
リリース: 2024-11-16 19:02:03
オリジナル
729 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート