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