ホームページ >データベース >mysql チュートリアル >PHP で MySQL クエリが 1 行しか返さないのはなぜですか? それを修正するにはどうすればよいですか?

PHP で MySQL クエリが 1 行しか返さないのはなぜですか? それを修正するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-02 15:21:11785ブラウズ

Why Does My MySQL Query Only Return One Row in PHP, and How Can I Fix It?

単一行の結果を生成する MySQL の問題の特定

PHP を使用して SQL クエリを実行すると、MySQL がデータベースに一致するレコードが複数含まれている場合でも、単一行のみが返されます。これにより、予期しない結果が発生する可能性があり、トラブルシューティングが困難になる場合があります。

この例では、PHP スクリプトは、fastsearch という名前のテーブルに対して、タグ列が特定の値と一致する行をクエリしています。ただし、このコードでは、結果セットの最初の行のみを取得する mysql_fetch_assoc() 関数を使用しているため、レコードが 1 つだけ表示されます。

単一行取得の問題の解決

この問題を修正し、データベースから一致する行をすべてフェッチするには、PHP コードを次のように変更します。

$query = mysql_query("SELECT `title`,
                             `url_title`
                        FROM `fastsearch`
                       WHERE `tags`
                            LIKE '%$q%'
                       LIMIT 5");

while ($row = mysql_fetch_assoc($query)) {
    print_r($row);
}

ここでは、while ループを利用して結果セットを反復処理します。 mysql_fetch_assoc() 関数はループ内で呼び出され、実行されるたびに次の行を返します。ループはフェッチする行がなくなるまで継続し、一致するレコードをすべて表示します。

この解決策は、次の 2 つの一般的な問題に対処します:

  1. クエリ変数のタイプミス: 元のコードにはタイプミスがありました: $query ではなく $quer です。これは修正されました。
  2. **mysql_fetch_assoc() の適切な使用法: タイプミスを解決した後、mysql_fetch_assoc() 関数はループ内で正しく使用されます。これは繰り返し呼び出されて各行を反復処理し、一致するすべてのレコードが確実に出力されるようにします。

以上がPHP で MySQL クエリが 1 行しか返さないのはなぜですか? それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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