[英]php multiple keyword search
在我的php搜索多個關鍵字時需要幫助,下面的代碼不顯示任何結果,但是當我刪除explode函數並指定結構時,它可以工作,但僅顯示1個關鍵字的結果。
例如,我在列中有一個關鍵字列表:蘋果,紅,藍,書,黃鳥。
使用下面的代碼,如果我在搜索框中鍵入紅蘋果將不會產生任何結果,我希望它顯示包含我鍵入的關鍵字的所有結果。 謝謝
$search = $_POST['search'];
$search = strtoupper($search);
$search = strip_tags($search);
$search = trim ($search);
$search = explode(",",$search);
$query=$db->prepare("SELECT * FROM thread WHERE title like '%".$search."%' OR keyword like '%".$search."%' OR description like '%".$search."%'");
foreach($search as $k)
{$query=$db->prepare("OR keyword LIKE '%$k%' OR title LIKE '%$k%' OR description LIKE '%$k%'");}
$query->execute(array('title' => $search, 'description'=>$search, 'keyword'=>$search));
$query->setFetchMode(PDO::FETCH_ASSOC);
$List="";
if($query->rowCount()<1)
{$List.="<div class='containerr'>No results found.</div>";}
else
{
while($row=$query->fetch())
{
$vid=$row['id'];
$user=$row['username'];
$preview=$row['preview'];
$names=$row['names'];
$good=$row['good'];
$date=$row['date'];
$date=date('M-d-Y', strtotime($date));
$title=$row['title'];
$List.='<div class="LISTT"><a href="mp.php?id='.$vid.'">'.$preview.'<br/>
<label>'.$title.'</label><br/>
<label style="color:black;">Added:</label> <label style="color:#666666">'.$date.'</label></a></div>';
}
問題是,您覆蓋了SQL而不是將其附加到SQL。 除此之外,您還可以對多余的組合值進行標題搜索,我想這不是您想要的。 嘗試這個:
$search = $_POST['search'];
$search = strtoupper($search);
$search = strip_tags($search);
$search = explode(",",$search);
$sql=array("SELECT * FROM thread WHERE ");
foreach($search as $k) {
$k=trim($k);
$sql[]="keyword LIKE '%$k%' OR title LIKE '%$k%' OR description LIKE '%$k%'";
}
$sql=implode(' OR ', $sql);
$query=$db->prepare($sql);
$query->execute(array());
$query->setFetchMode(PDO::FETCH_ASSOC);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.