ホームページ >バックエンド開発 >PHPチュートリアル >MySQLi 結果セットの最初の値にしかアクセスできないのはなぜですか?

MySQLi 結果セットの最初の値にしかアクセスできないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-19 11:33:02866ブラウズ

Why Am I Only Accessing the First Value in My MySQLi Result Set?

MySQLi での結果セットの反復

MySQLi で結果セットを操作する場合、最初の値のみにアクセスできるという問題が発生する可能性があります反復中。これは通常、fetch_array() の使用とその動作の不適切な理解が原因で発生します。

fetch_array() のデフォルトの動作

デフォルトでは、fetch_array() は両方の要素を含む配列を返します。 MYSQLI_BOTH として知られるインデックス付きの連想キー。インデックス付きキーまたは連想キーのみを含む結果セットを指定するには、それぞれ MYSQLI_NUM または MYSQLI_ASSOC を使用します。

fetch_array() の代替手段

fetch_array() に依存するのではなく、より効率的で簡潔な代替案を検討してください:

  • 連想配列 (MYSQLI_ASSOC): 列名をキーとして使用して値にアクセスします:
while ($row = $output->fetch_array(MYSQLI_ASSOC)) {
    echo $row['uid'];
}
  • インデックス付き配列 (MYSQLI_NUM): インデックスによる値へのアクセス:
while ($row = $output->fetch_array(MYSQLI_NUM)) {
    echo $row[0];
}
  • オブジェクト指向反復: 結果の反復fetch_array() の必要性を省略して、反復可能なオブジェクトとして設定します。
foreach ($output as $row) {
    echo $row['uid'];
}

反復のトラブルシューティング

$i を使用してインデックス付きキーをインクリメントすることはできません。連想キーを含む結果セットに適しています。たとえば、結果セットには次の構造の値が含まれる場合があります:

[
    0 => [0 => 1, 'uid' => 1],
    1 => [0 => 2, 'uid' => 2],
    2 => [0 => 3, 'uid' => 3]...
]

このシナリオでは、$row[1] が後続の反復で存在しないため、問題が発生します。

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

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