我有这个问题:
$conditions = array(
'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"
);
if (isset($autore_diviso))
$conditions[] = array('autori LIKE ? AND ?' => array("%$autore1%","%$autore2%"));
else
$conditions[]=array('autori LIKE' => "%$a%");
if (!$anno&&!$anno2) // I HAVE TO CHANGE THIS - if the user does not insert any year
$conditions=$conditions;
else {
if (!$anno)
$conditions[] = array('anno <=' => "$anno2");
if (!$anno2)
$conditions[] = array('anno >=' => "$anno");
}
if ($anno&&$anno2)
$conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));
其中anno表示年份,editore表示发布者,titolo表示标题。
它正在搜索正好2位作者。
如果我调试$条件,我有例如:
Array (
[editore LIKE] => %%
[titolo LIKE] => %%
[0] => Array
(
[autori LIKE ? AND ?] => Array
(
[0] => %massi%
[1] => %palu%
)
) )
但结果是空的。
答案 0 :(得分:0)
这不是你在PHP中向数组添加元素的方式。此外,没有必要使用显式AND
,这是默认值。只有在存在多个相同的数组键时才需要它。
$conditions = array(
'autori LIKE ? AND ?' => array("%$autore1%","%$autore2%"), 'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"
);
if (!$anno)
$conditions[] = array('anno <=' => "$anno2");
if (!$anno2)
$conditions[] = array('anno >=' => "$anno");
if ($anno&&$anno2)
$conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));
答案 1 :(得分:0)
使用此代码解决:
$conditions = array(
'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"
);
if (isset($autore_diviso))
$conditions[] = array('autori LIKE ? AND autori LIKE?' => array("%$autore1%","%$autore2%"));
else
$conditions[]=array('autori LIKE' => "%$a%");
if (!$anno&&!$anno2) // Da sistemare.
$conditions=$conditions;
else {
if (!$anno)
$conditions[] = array('anno <=' => "$anno2");
if (!$anno2)
$conditions[] = array('anno >=' => "$anno");
}
if ($anno&&$anno2)
$conditions[] = array('anno BETWEEN ? AND ?' => array($anno,$anno2));
debug($conditions);