我有查询的代码:
$conditions[]=array('codiceBiblio IN (?)'=> $tot);
其中$ tot是一个字符串(例如:2345,5657,4565,5678)。
在这种情况下,查询将是:
SELECT [...] WHERE codiceBiblio IN ('2345,5657,4565,5678')
但它只会返回第一条记录。
所以它应该是:
SELECT [...] WHERE codiceBiblio IN (2345,5657,4565,5678)
我该怎么做?
查询的构建方式
我有一个查询代码:
// General Query
$conditions = array(
'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"
);
我用用户的选择填写$条件,例如:
if ($anno&&$anno2)
$conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));
if (isset($menu)&&$menu!='')
$conditions[]=array('classe LIKE' => "%$menu%");
答案 0 :(得分:8)
只需使用数组并省略IN()
子句。手册(Complex Find Conditions)提供了此示例:
array('Company.status' => array('inactive', 'suspended'))
...产生以下SQL:
`Company`.`status` IN ('inactive', 'suspended')
如果$tot
是2345,5657,4565,5678
之类的字符串,则首先需要explode()。
免责声明:这适用于Cake 2,不确定1.2。
答案 1 :(得分:1)
ÁlvaroG。Vicario的建议是正确的,但你也可以这样做:
$conditions[]=array('codiceBiblio IN (' . $tot . ')');