我試圖通過在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搜索領域,它只是使用了我們輸入的第一個參數。
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;
凡$vals = "'" . str_replace(",", "', '", $searchquery) . "'"; and $searchsquery = $_POST['search']; //From the searchfield
希望你能幫助我找到什麼我缺少這裏..
謝謝!
提示今天:切換到現代,明確的'JOIN'語法!編寫起來更容易(沒有錯誤),更易於閱讀和維護,並且如果需要的話,更容易轉換爲外部聯接。 – jarlh
您的GROUP BY無效!不會在較新版本的MySQL上運行(除非在兼容模式下),並且在舊版本中出現不可預知的結果。一般的GROUP BY規則說:如果指定了GROUP BY子句,SELECT列表中的每個列引用必須標識一個分組列或者是一個set函數的參數! – jarlh
@jarlh你能舉個例子嗎? :) –