2013-05-08 3 views
0
$keywords=array("test","tset"); 
$matches = implode(',', $keywords); 
$sql = "SELECT * FROM `reg` WHERE title like in '%$matches%' group by p_title"; 

$data = mysql_query($sql); 
while($info=mysql_fetch_array($data)) 
{ 
Print " {$info['title']}<br /> "; 
} 

Я хочу написать запрос, какпоиска MySQL несколько слов в цикле

$sql = "SELECT * FROM `reg` WHERE title like in '%test%' group by p_title"; 
    $sql = "SELECT * FROM `reg` WHERE title like in '%tset%' group by p_title"; 

........

Как я могу найти для каждого ключевого слова в одном запросе?

+0

http://stackoverflow.com/questions/1127088/mysql-like-in – user20232359723568423357842364

ответ

1
"SELECT * FROM reg WHERE title like in '%test%' or title like in '%tset%' group by p_title" 
+0

если у меня есть 15 различных слов в массиве, я должен написать длинный запрос для каждого случая? –

+0

Нет, вам нужно использовать цикл для этого –

0
SELECT * FROM reg WHERE title like in '%{$keywords[0]}%' or title like in '%{$keywords[1]}%' 

Я бы посоветовал использовать петлю для этого. Пример:

Примечание: это довольно псевдо-EY

$query = "SELECT * FROM reg WHERE title like in "; 
foreach ($keyword in $keywords) { 
    if (!$keyword is last) 
    $query .= "'%$keyword%' or title like in "; 
    else $query .= "'%$keyword%' group by p_title" 
} 

затем оценить $query

+0

в последнем цикле -> '% $ keyword%' или заголовок, как в группе, p_title .. Как удалить заголовок или заголовок, например, в конце? –

+0

@MamasPlodos обновлен в соответствии с этим вопросом – sircapsalot

0

Смотрите этот пост: MySQL LIKE IN()?

$keywords=array("test","tset"); 
$matches = implode('|', $keywords); 
$sql = "SELECT * FROM `reg` WHERE title REGEXP '%$matches%' group by p_title"; 

$data = mysql_query($sql); 
while($info=mysql_fetch_array($data)) 
{ 
    Print " {$info['title']}<br /> "; 
} 
0
$sql = "SELECT * FROM `reg` WHERE title "; 

$where=''; 
foreach($keywords as $val) 
{ 
    $where .= "LIKE '%$val%' OR title "; 

} 
$where = substr($where , 0, -9); // to remove last OR 
$finalSql = $sql .$where; 

$data = mysql_query($finalSql); 
0

implode Функция РНР позволяет я plement, что без цикла:

$keywords=array("test","tset"); 
$matches = implode("%' OR title LIKE '%", $keywords); 
$sql = "SELECT * FROM `reg` WHERE title LIKE '%$matches%' group by p_title"; 

$data = mysql_query($sql); 
while($info=mysql_fetch_array($data)) 
{ 
Print " {$info['title']}<br /> "; 
} 
Смежные вопросы