我有一个搜索表单,我想让用户搜索一个或多个写书的作者。
我有这个代码将字符串放在一个数组中:
if (strpos($a,' ')||strpos($a,',')) {
$autore_diviso = explode(",", $a);
$dim=count($autore_diviso);
$i=0;
for ($i=0;$i<$dim;$i++)
{
$autore_diviso[$i]=trim($autore_diviso[$i]," ");
$autore_diviso[$i] = explode(" ", $autore_diviso[$i]);
}
debug($autore_diviso);
}
输出的内容如下:
Array(
[0] => Array
(
[0] => santone
)
[1] => Array
(
[0] => anfossi
)
[2] => Array
(
[0] => gli
) )
现在,我有这个查询代码:
$t = $params['titolo'];
$e = $params['editore'];
$anno = $params['anno'];
$anno2 = $params['anno2'];
$conditions = array( 'editore LIKE' => "%$e%",
'titolo LIKE' => "%$t%"
);
if (isset($autore_diviso)) // if I have more than 1 author
{
$dim=count($autore_diviso);
$i=0;
for ($i=0;$i<$dim;$i++)
{
$conditions['autori LIKE ?'] = array('OR' => array(
'%' . $autore_diviso[$i][0] . '%'));
} }
else
$conditions[]=array('autori LIKE' => "%$a%");
if (!$anno&&!$anno2)
$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));
}
我的问题是:
if (isset($autore_diviso)) // if I have more than 1 author
{
$dim=count($autore_diviso);
$i=0;
for ($i=0;$i<$dim;$i++)
{
$conditions['autori LIKE ?'] = array('OR' => array(
'%' . $autore_diviso[$i][0] . '%'));
}
}
哪个输出:
Array (
[editore LIKE] => %%
[titolo LIKE] => %%
[autori LIKE ?] => Array
(
[OR] => Array
(
[0] => %santone%
)
))
我搜索的最后一位作者(例如:anf,gli,santone) 如何使用该阵列搜索一个或多个作者?感谢。
答案 0 :(得分:0)
我想我解决了这个问题:
if (isset($autore_diviso)) {
$dim=count($autore_diviso);
$i=0;
while ($i<$dim)
{
$conditions[]=array ('autori LIKE ?' => array(
'%' . $autore_diviso[$i][0] . '%'));
$i++;
} }