2017-01-20 8 views
1

SQLクエリで複数の検索をソートしてコードを実装しようとしました。複数の単語をSql/phpで検索する

SELECT *, COUNT(*) as `total_ingredients` 
    FROM opskrifter as k 
    , ingredienser as i 
WHERE k.id = i.opskrifterid 
    AND i.ing_name IN ('salt', 'kommen', 'hakkede tomater', 'pasta', 'stødt chilli') 
    GROUP BY k.id 
ORDER BY COUNT(*) DESC; 

私はMySQLでのステートメントを実行したときにそれが正常に動作しますが、私は私たちのPHPの検索フィールドに実装しようとすると、それだけで私たちが入力し、最初の引数を使用しています。

$vals = "'" . str_replace(",", "', '", $searchquery) . "'"; and $searchsquery = $_POST['search']; //From the searchfield

おかげ..あなたは、私がここで行方不明です何でも見つける私を助けることを願って!

SELECT *, COUNT(*) as `total_ingredients` 
    FROM opskrifter as k 
    , ingredienser as i 
WHERE k.id = i.opskrifterid 
    AND i.ing_name IN ($vals) 
    GROUP BY k.id 
ORDER BY COUNT(*) DESC; 

+0

ヒントに動作しますが:に切り替え現代的で明示的な 'JOIN'構文! (エラーなしで)書く方が簡単で、読みやすく、管理しやすく、必要に応じて外部結合に変換する方が簡単です。 – jarlh

+0

あなたのGROUP BYは無効です!互換性モードでない限り、新しいMySQLバージョンでは動作しません。古いバージョンでは予期しない結果になります。 GROUP BY句が指定されている場合、SELECTリストの各列参照は、グループ化列を特定するか、または集合関数の引数でなければなりません。 – jarlh

+0

@jarlhあなたは例を挙げることができますか? :) –

答えて

0

あなただけ::コードの下に

$vals = explode(',', $searchsquery); 
$vals = join("','", $vals); 
$vals = "'$vals'"; 

に従うと、このクエリでは、この$ valを入れてください$valsを爆発し、参加する必要があり、これが今日の

SELECT *, COUNT(*) as `total_ingredients` 
    FROM opskrifter as k 
    , ingredienser as i 
WHERE k.id = i.opskrifterid 
    AND i.ing_name IN ($vals) 
    GROUP BY k.id 
ORDER BY COUNT(*) DESC; 
+0

$ vals - "Where句で"不明な列 '配列' " –

+0

@ jacobassoignonはあなたの$ val変数コンマ区切り文字列に何があるのか​​教えていただけますか? –

+0

$ vals = "'" str_replace( "、"、 "'、'"、$ searchquery)。 "'"; –

関連する問題