2017-10-09 88 views
0

也許這是一個簡單的問題,但我很努力地找到答案。MYSQL:基於用戶輸入的過濾器查詢

我正在嘗試基於category,subjectmedium字段值從表art實施過濾器功能。

這意味着,如果用戶只選擇category的結果將是查詢 SELECT * FROM ART WHERE category=val

如果用戶選擇categorysubject它應該是SELECT * FROM ART WHERE category=val AND subject=val

,但我不如何我動態地構建這個查詢一種方法是根據條件編寫所有可能的組合查詢和執行,但我不認爲它是一個好方法

+0

你可以分享你解決這個問題的任何嘗試的代碼嗎? –

+0

我提到了我的問題方法 – Jabaa

+0

您是否爲此編寫了任何代碼? –

回答

1
$sql=" SELECT * FROM ART where 1=1 "; 

if(!empty($category) { 
    $sql.=" and category= $value"; 
} 

if(!empty($subject) { 
    $sql.=" and subject= $value"; 
} 

if(!empty($medium) { 
    $sql.=" and medium= $value"; 
} 

其中1 = 1就是保持語法正確否則你需要有一些登錄相應裏添加作爲你不能在所有三個檢查中添加(將會產生不正確的sql字符串)。

閱讀關於sql注入。使用參數綁定來添加參數,這只是爲了得到一個想法,這將工作,但易受sql注入攻擊

+0

我只是在努力爭取這個'哪裏1 = 1'讓我試試 – Jabaa

0

嘗試所有的過濾器在where條件使用OR NOT AND如下圖所示

SELECT * FROM ART WHERE category=val OR subject=val OR medium=val;