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

Susan Sarandon
リリース: 2024-11-02 17:27:29
オリジナル
397 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!