2015-05-15 51 views
2

我正在爲IOS編寫Web服務在cakePhp並卡住IN條件。在MySql中使用IN條件搜索

我有一個表dog_temperaments,它的值爲"happy,dependent,shy"

現在,如果IOS給我陣列(高興,害羞的)然後我搜索篩選

Select dog_temperaments.* where temperaments IN(happy,shy)

其工作正常,但如果IOS給我陣列0或任何(通過任何的氣質是指搜索)又如何我會搜索........

任何手段都性情搜索

+0

然後就刪除'IN'條款如果多數民衆贊成的情況下 – Ghost

+0

你是什麼意思0或任何意思?澄清。並添加您嘗試的代碼。 –

+1

在搜索查詢之前放置一個條件,如果數組未形成或爲空,則從查詢中刪除IN。 –

回答

1

要麼你可以檢查數組爲空或不喜歡

if(is_array($array)) { 
    Use 
    Select dog_temperaments.* where temperaments IN('happy','shy'); 
} else { 
    notify Enter proper search key 
} 

否則你反正通過使用相同的查詢獲得空的結果,如果數組爲空,像

Select dog_temperaments.* where temperaments IN(0); 
3

如果是0或任何any則沒有必要的條件,因爲它ishould返回所有的人。

因此,假設$type將包含氣質作爲一個數組和0/any將是這種情況下的單個元素。

if(count($type) == 1 && in_array(($type[0], array('0', 'any'))) { 
    $condition = ""; 
} else { 
    $condition = "WHERE temperaments IN ('" . implode("','", $type) . "')"; 
} 

和查詢就會像 -

"Select dog_temperaments.* from dog_temperaments ".$condition 
+0

這可能是什麼操作系統正在尋找 –

+1

你忘了報價,或者如果可能,創建動態佔位符,然後綁定所需的值 – Ghost

+0

好的答案,但我的問題是,如果$條件'是空的,它給出了所有可能不是我認爲的標準的結果。(可能) – Gautam3164