PHP搜索显示多个结果

时间:2017-06-15 08:32:13

标签: php mysql search

我正在尝试搜索我的网站,如果我使用会员证书进行搜索,则不会显示其详细信息。但是在我的代码中,当我搜索证书号码:1时,它会显示证书编号1,10,11,12,13,14,15 ......的详细信息。

有没有办法显示单个会员的详细信息。

if(isset($_POST['search'])){
  $searchq  = $_POST['search'];
  $searchq = preg_replace("#[^0-9a-z]#i","",$searchq);

  $query = mysql_query("SELECT * FROM  certificate  WHERE certificate_no LIKE '%$searchq%' ") or die ("could not search "); 
}
$count = mysql_num_rows($query);
if($count==0){   
  $output = 'There is no search result ';
} else {
    while ($row = mysql_fetch_array($query)){  
      $name =$row['name']; 
      $certificate_no =$row['certificate_no']; 
      $y_of_passing =$row['y_of _passing'];
      $grade =$row['grade']; 
      $score =$row['score'];

      $output.='<div>Certificate Number : '  .$certificate_no.' <div>Candidate Name :  '.$name. '<div>Grade/Score : '  .$grade.' <div>Course Name :  '.$score. '<div>Year Of Passing: '.$y_of_passing.'<div>'; 

      echo "<img src ='".$row['photo']."' height='100' width='200' >" ; 

   }

}
print("$output");

4 个答案:

答案 0 :(得分:0)

您使用了错误的通配符使用=或仅使用或使用RLike

SELECT * FROM  certificate  WHERE certificate_no LIKE '$searchq'
SELECT * FROM  certificate  WHERE certificate_no = '$searchq'
SELECT * FROM  certificate  WHERE certificate_no RLike '[[:<:]]$searchq[[:>:]]'

答案 1 :(得分:0)

更改您的查询:

$query = mysql_query("SELECT * FROM  certificate  WHERE certificate_no LIKE '%$searchq%' ")

$query = mysql_query("SELECT * FROM  certificate  WHERE certificate_no  = ". $searchq ."

再试一次。

说明:当您使用LIKE '%$searchq%'时,它会在任意位置搜索1的字符串,即PATTERN MATCHING。但是如果你想要平等比较而不是尝试=。它将搜索完全匹配。

答案 2 :(得分:0)

尝试像这样编辑$ query <:

$query = mysql_query("SELECT * FROM  certificate  WHERE certificate_no LIKE $searchq ") or die ("could not search "); 

答案 3 :(得分:0)

Like是模式匹配。它将搜索列中的给定字符串。这就是为什么它返回匹配的模式结果,如10, 11,12,13,14,15。你注意到结果都有1。您用来匹配like '%1%'中的模式。所以你需要使用比较运算符,如certificate_no=1

  

警告mysql_query,mysql_fetch_array,mysql_connect等..扩展在PHP 5.5.0中已弃用,并且已在PHP 7.0.0中删除。   相反,应该使用MySQLi或PDO_MySQL扩展。