我对搜索表单有这个查询:
// General Query
$conditions = array(
'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"
);
现在,如果用户选择填写某个字段(例如作者,年份等),我有:
if (isset($menu)&&$menu!='')
$conditions[]=array('classe LIKE' => "%$menu%");
或者:
if ($anno&&$anno2)
$conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));
如果用户为书选择了一些标签,我有:
$query_t = $CdBibliotem->query("SELECT codiceBiblio FROM cd_bibliotem WHERE codiceTematica IN (".implode(',', $fields).")");
$query_t = Set::classicExtract($query_t,'{n}.cd_bibliotem.codiceBiblio');
$tot=implode(',', $query_t);
$conditions[]=array('codiceBiblio IN (?)'=> "$tot");
这应该有效,但我不知道为什么,它只给我第一张记录。
这是调试最终查询的示例,其中用户仅选择1个标记,并将其他字段留空:
Array (
[editore LIKE] => %%
[titolo LIKE] => %%
[0] => Array
(
[autori LIKE] => %%
)
[1] => Array
(
[codiceBiblio IN (?)] => 118729,118656,118645,118554,118534,118533,118532,118531,118530,118529,118528,118527,118526,118121,117632,117515,117040,116562,115851,115787,114613,114612,113545,113385,113142
) )
在这种情况下,它给了我第一本书的所有细节(id = 118729),同时它应该给我所有书籍的详细信息。