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 /> ";
}

I want to write a query like

   $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";

........

How can I search for each keyword in one query ?

Mudassir Hasan
  • 28,083
  • 20
  • 99
  • 133

5 Answers5

1
"SELECT * FROM reg WHERE title like in '%test%' or  title like in '%tset%' group by p_title"
웃웃웃웃웃
  • 11,829
  • 15
  • 59
  • 91
0
SELECT * FROM reg WHERE title like in '%{$keywords[0]}%' or title like in '%{$keywords[1]}%'

I'd advise using a loop for this. Example:

Note: this is pretty psuedo-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"
}

then evaluate $query

ddavison
  • 28,221
  • 15
  • 85
  • 110
0

See this post: 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 /> ";
}
Community
  • 1
  • 1
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); 
Mudassir Hasan
  • 28,083
  • 20
  • 99
  • 133
0

implode PHP function allows to implement that without a loop:

$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 /> ";
}
Olexa
  • 577
  • 2
  • 16