使用php搜索更多关键字的mysql数据库

时间:2013-10-29 11:20:35

标签: php mysql search

根据种姓,宗教,地点,性别,年龄,我需要从我的数据库中过滤数据,我该怎么做。

在mysql数据库中,我将宗教,性别,位置,年龄作为同一个表中的单独列。

我使用的代码

$result=mysql_query("SELECT * FROM enquiry where location like '%$text%'and gender like'%$text1%' ")
                                                          or        die("error"); 
$found=mysql_num_rows($result); 

if($found>0){ 
 while($row=mysql_fetch_array($result)){ 
 //display of data 
  } 

使用此我可以使用一个关键字从一列搜索数据...因为我是新的请给我正确的方法来使用php解决这个问题。

4 个答案:

答案 0 :(得分:0)

使用OR运算符

$result=mysql_query("SELECT * FROM enquiry where location like '%$text%' OR caste like '%$text%' OR religion like '%$text%' OR gender like '%$text%' OR age like '%$text%'")
                                                          or        die("error"); 
$found=mysql_num_rows($result); 

if($found>0){ 
 while($row=mysql_fetch_array($result)){ 
 //display of data 
  } 

答案 1 :(得分:0)

尝试创建动态查询这里是示例查询,您可以根据自己的需要详细说明。我假设您正在通过表单获取要从用户搜索的数据。

现在我们所要做的就是检查用户是否填写了特定字段并相应地创建查询。这样,您的查询就不会变得不必要了。

   $sql = "SELECT * FROM table_name ";

   if( isset($_REQUEST['location']) && $_REQUEST['location'] != '' ){
        if( strpos($sql, "WHERE") ){
             $sql .= "AND WHERE location like '%$text%'";
        }else{
             $sql .= "WHERE location like '%$text%'";
        };           
   }

   if( isset($_REQUEST['religion']) && $_REQUEST['religion'] != '' ){
       if( strpos($sql, "WHERE") ){
            $sql .= "AND WHERE religion like '%$text%'";
       }else{
            $sql .= "WHERE religion like '%$text%'";
       }
   }

   $result=mysql_query( $sql ) or die("error"); 

答案 2 :(得分:0)

尝试这样的全文搜索: -

$q="your search value";    
$searchArray = explode(" ", $q);
$query="SELECT * FROM cmusers WHERE  MATCH (`firstname`, `lastname`,`email`) AGAINST ('";
$i=0;
foreach ($searchArray as $word) {
    $query .= "*".$word."* ";
}
$query .= "' IN BOOLEAN MODE)";

这将搜索所有列的所有关键字 但是这个需求表myisam engine 默认情况下,大多数表都使用innoDB引擎,因此您可以通过此

更改引擎
ALTER TABLE table_name ENGINE = MYISAM;

答案 3 :(得分:0)

我也遇到了同样的问题,并提出了以下解决方案。

//Building the Query
 if (!empty($_POST['location'])) {
      $location=$_POST['location'];
      $sql[] = "enquiry.location = '%$location%'";
  }
  if (!empty($_POST['religion'])) {
      $religion=$_POST['religion'];
      $sql[] = "enquiry.religion = '%$religion%' ";
  }
  if (!empty($_POST['gender'])) {
      $gender=$_POST['gender'];
      $sql[] = "enquiry.gender LIKE '%$gender%'";
  }
    //etc...
    if (!empty($sql)) {
        $built_query = "SELECT * FROM `enquiry`";
        //This implodes the sql array creating the WHERE statement with appended AND statements
        $built_query .= " WHERE " . implode(' AND ', $sql);
    } else {
        $built_query = "SELECT * FROM `enquiry`";   
        }
    $result = mysqli_query($conn, $built_query);
    $total_records=$result->num_rows;    
    if ($total_records < 1) {
        echo "No records found";
    } else {
        while ($row_result = $result->fetch_assoc()) {  
          //Whatever you want to do with the data
        }