2015-05-15 136 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