0
我有一個搜索表單,我想讓用戶搜索一個或多個編寫書籍的作者。
我有這樣的代碼,把字符串數組:
搜索一個或多個作者查詢cakephp
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)。
如何使用該數組搜索一個或多個作者?謝謝。
你嘗試或者代替這裏? $ conditions [] = array('autori LIKE?OR autori LIKE?'=> array(「%$ autore1%」,「%$ autore2%」)); – cartina 2013-02-12 10:58:16
此鏈接將幫助你。 http://stackoverflow.com/questions/1127088/mysql-like-in – cartina 2013-02-12 11:01:23
@cartina我沒有使用$ autore1和$ autore2了,我更新了我的問題。 – Ettore 2013-02-12 11:47:43