在查询中传递字符串而不使用引号''

时间:2013-02-27 13:01:36

标签: php mysql cakephp cakephp-1.2

我有查询的代码:

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

2 个答案:

答案 0 :(得分:8)

只需使用数组并省略IN()子句。手册(Complex Find Conditions)提供了此示例:

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

...产生以下SQL:

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

如果$tot2345,5657,4565,5678之类的字符串,则首先需要explode()

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

答案 1 :(得分:1)

ÁlvaroG。Vicario的建议是正确的,但你也可以这样做:

$conditions[]=array('codiceBiblio IN (' . $tot . ')');