2015-12-21 210 views
0

我的表名爲'posts'有3列,分別是早上,下午和晚上。 現在我需要通過這三列來搜索數據。現在,兩列值和要搜索的數據都由用戶提供。所以這個值可以是數組或單個值。如何通過多列進行搜索

問題是如何搜索多列?

需要糾正的部分查詢。

$sql .= " AND posts.".$cols." IN ('" . implode("',' ",$days) . "')"; 

上面提到的columsn的值存儲爲以逗號分隔的字符串。這就是爲什麼IN ('" . implode("',' ",$days) . "')

$cols代表列。我需要搜索用戶提供的欄目,這些欄目可能是早上,早上,下午,等等。在列中查找數據不是問題。 BUt搜索用戶提供的列是。因爲如果他們給單一的價值,它沒有問題,但如果它的數組?

$cols

array (size=3) 
    0 => string 'morning' (length=7) 
    1 => string 'afternoon' (length=9) 
    2 => string 'evening' (length=7) 

樣本數據的樣本數據爲$天

array (size=3) 
    0 => string 'Sun' (length=3) 
    1 => string 'Sun' (length=3) 
    2 => string 'Sun' (length=3) 

回答

0

如果sequance $cols$days陣列是一樣的,那麼你就可以遍歷$cols,並添加到SQL查詢其搜索的一部分對於每個colday

// Like this 
foreach($cols as $k => $col){ 
    $sql .= " AND posts.".$col." = ".$days[$k].")"; 
} 
+0

$ cols和$ days都帶有齲齒不同的數組值?我還能用這個嗎? – 112233

+0

不,你應該以某種方式修改你的數據檢索部分,所以最後你將有2個數組的值按照確切的順序,我的意思是'$ cols [0](morning)'value應該是'$ days [0](Sun) ','$ cols [1](下午)'價值是'$ days [1](Sun)',2 - > 2 ... – Armen