ホームページ  >  記事  >  バックエンド開発  >  MySQL クエリが複数行を期待しているのに 1 行しか返さないのはなぜですか?

MySQL クエリが複数行を期待しているのに 1 行しか返さないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-02 17:27:29401ブラウズ

Why Does My MySQL Query Only Return One Row When I Expect Multiple?

誤って表示された MySQL 行の修正

予期される結果が複数である必要があるときに、MySQL が 1 つの行しか返さないという問題に直面していますか?この PHP コードを見てみましょう:

<code class="php">$query = mysql_query("SELECT `title`, `url_title` FROM `fastsearch` WHERE `tags` LIKE '%$q%' LIMIT 5");
$query2 = mysql_fetch_assoc($query);
print_r($query2);</code>

このコードは、検索クエリに基づいて fastsearch テーブルから最初の 5 つの一致する行をフェッチすることを目的としています。ただし、この問題は、mysql_fetch_assoc の使用法が間違っているために発生します。

while ループを使用して行を反復処理する

これを解決するには、while ループを使用する必要があります。一致するすべての行を反復処理し、1 つずつ表示します。修正されたコードは次のとおりです。

<code class="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);
}</code>

この更新されたコード内:

  1. $query 変数のスペルは正しくあります。
  2. while ループを使用して反復処理が行われます。結果セット。
  3. $row には、ループ内で mysql_fetch_assoc を使用して現在の行が割り当てられます。
  4. print_r($row) は、ループを通過するたびに現在の行を表示します。

追加の注意事項:

  • MySQL 拡張機能が PHP 構成にインストールされ、有効になっていることを確認してください。
  • $q 変数に正しい値が含まれていることを確認してください。検索クエリ。
  • 行はフィールド名がキーとなる連想配列で返されます。
  • 修正されたコードでは、指定された制限 (この場合は 5) までの一致するすべての行が表示されます。 .

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

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