MySQL クエリが 1 行のみを返す: デバッグと解決
MySQL を使用しているときに、PHP スクリプトが 1 行だけを取得するインスタンスが発生する困惑するかもしれません。この問題は、クエリ自体は有効でも、スクリプトの実装により予期されるすべての行を取得できない場合に発生します。
問題のトラブルシューティング
提供されている PHP コードを検討してください。 fastsearch テーブルから行を取得するクエリを実行します:
$query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"); $query2 = mysql_fetch_assoc($quer); print_r($query2);
SQLクエリは複数の行を返しますが、スクリプトでは 1 行のみが表示されます。この動作は、mysql_fetch_assoc() がデフォルトで単一行のみをフェッチするために発生します。すべての行を取得するには、ループを使用してそれらの行を反復処理する必要があります。
解決策: while ループを使用して複数の行を取得する
修正されたコード スニペットでは、 while ループでクエリ結果を繰り返し処理し、各行を出力します。
$query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5"); while ($row = mysql_fetch_assoc($query)) { print_r($row); }
この更新されたコードでは、 mysql_fetch_assoc() がループ内で呼び出され、$row 変数に現在の行が割り当てられます。これにより、ループがクエリ結果の各行を反復処理できるようになり、すべての行を出力できるようになります。
以上がPHP の MySQL クエリが 1 行しか返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。