4

我有这个查询代码:

$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%"
);

我用用户的选择填充 $conditions,例如:

if ($anno&&$anno2)
    $conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));

if (isset($menu)&&$menu!='')
    $conditions[]=array('classe LIKE' => "%$menu%");
4

2 回答 2

8

只需使用数组并省略IN()子句。手册(复杂查找条件)提供了这个例子:

array('Company.status' => array('inactive', 'suspended'))

...产生以下SQL:

`Company`.`status` IN ('inactive', 'suspended')

如果$tot是一个字符串,2345,5657,4565,5678你需要先explode()它。

免责声明:这适用于 Cake 2,不确定 1.2。

于 2013-02-27T13:13:50.470 回答
1

Álvaro G. Vicario 的建议是正确的,但您也可以这样做:

$conditions[]=array('codiceBiblio IN (' . $tot . ')');
于 2013-02-27T14:53:05.570 回答