2013-03-13 42 views
1

我想讓用戶通過結果進行過濾。SQL查詢中的變量的任何值避免被零錯誤劃分

爲此,我有幾個下拉列表,默認情況下,它們都設置爲「全部」。從這些字段的值被髮送通過POST方法到PHP,然後我繼續這樣:

if ($variable == "All") { 
$variable = '%'; 
} 

然後在PDO語句,WHERE子句都按這樣的:

WHERE field LIKE :variable 

我之後傳遞變量通過陣列

我被零誤差,其怪異得到司因爲當我硬代碼SQL查詢與

field LIKE '%' 

這一切都很好...

感謝您的幫助,非常感謝,因爲我一直在嘗試很多選擇來解決這個問題!

+3

你能發佈一些更多的代碼嗎?我很確定這個錯誤是在別的地方。 – 2013-03-13 22:33:21

+0

除零誤差幾乎肯定是其他地方 – Patashu 2013-03-13 23:00:17

回答

0

而是加入大量的無用的WHERE條件一樣

field1 LIKE :value1 OR field2 LIKE :value2 OR field3 LIKE :value3 

產生像

field1 LIKE '%' OR field2 LIKE '%' OR field3 LIKE '%actual filter%' 

一個查詢,只能造成您的查詢的一個較長的執行時間,你應該寫的是添加過濾條件句只有當設置。

+0

感謝您的答覆。我沒有提交整個代碼(太長了!)。但問題不是我所能做到的。在我的答案下面 – user2167526 2013-03-14 14:03:49

0

除零錯誤事實上來自於我的SQL查詢包含一個CONCAT(名稱,'%'),它適用於SQL,但不能很好地被php解釋。

相反,CONCAT(姓名, 「%」)的作品就好了... ...

新手的錯誤!