2017-04-14 11 views
0

私はいくつかのPHPコードに問題があります。だから、私は検索ボックス内にいくつかのテキストを書くとき、私はより多くの結果を取得する必要がありますが、私は1になる。これは私がINNER JOINで2番目のクエリを追加したときに起こった。なぜ私はもっと多くの代わりに1つの結果しか得られないのか分かりません。 2番目のクエリを削除すると、すべての結果が表示されます。PHP検索ボックスissuse

+0

最初の選択肢にまだ結果が残っていない間に別の選択をしなかったのですか? – frz3993

+0

最初のステートメントと2番目のステートメントに同じ変数 '$ STH'を使用しています。 – Barmar

答えて

1

両方のクエリで同じ変数$STHを使用しています。外側のループは

while ($row = $STH->fetch()) 

ラインに戻って取得するときだから、$STHは現在、2番目のクエリを指します。そのクエリの結果の最後に達したので、ここでfetch()を呼び出すとfalseが返されるため、このループも終了します。

さまざまな変数名を使用してください。 $show_STHおよび$genre_STH

しかし、さらに良い解決策は、単一のクエリを使用することです。

SELECT s.poster, s.title AS show_title, s.release_date, g.title AS genre_title 
FROM (SELECT * 
     FROM tv_shows 
     WHERE title like :q 
     ORDER BY title ASC 
     LIMIT 5) AS s 
INNER JOIN tv_show_genres tg ON s.id = tg.tv_show_id 
INNER JOIN genres g ON tg.genre_id = g.id 
ORDER BY s.title 

あなた自身がこのようなネストされたループでクエリを実行見つけるほとんどの時間を、あなたは、2つのクエリを結合し、単一のクエリでそれを置き換えることができます。

+0

ありがとう、私は変数名を変更したばかりです。 – dovlapsy