2016-04-30 45 views
2

我有搜索表单。在这里有多个领域。有时我会用一个字段提交表单,有时候用两个表单提交,有时候会有多个字段值。由多个字段搜索。有时是一个字段,有时是一个字段

 if (isset($_POST['search'])) { 
     $projectName  = $_POST['pName']; 
     $clientId  = $_POST['s_by_clientName']; 
     $departmentId = $_POST['s_by_department']; 
     $statusName = $_POST['s_by_status']; 
     if (!empty($projectName)) 
     { 
      $searchSql = mysql_query("select * from project_list where projectName='$projectName'"); 
     } 

     if (!empty($clientId)) 
     { 
      $searchSql = mysql_query("select * from project_list where client_id='$clientId'"); 
     } 

     if (!empty($departmentId)) 
     { 
      $searchSql = mysql_query("select * from project_list where department_id='$departmentId'"); 
     } 

     if (!empty($statusName)) 
     { 
      $searchSql = mysql_query("select * from project_list where status='$statusName'"); 
     } 

    } 

这些查询只用于单个字段的搜索。 如何使查询执行搜索一个或多个字段值 是否有可能?

+1

的mysql_query()已被弃用,在PHP 5.5和PHP中移除7更新敬请代码中使用的PDO的mysqli库。尝试将搜索参数存储在数组中,并在提交多个字段时在查询中使用AND或OR进行追加。 – Shubhamoy

+0

哦,是的...这是一个现有的项目。只是简单地定制 –

回答

1

使用级联查询可变

$searchSql ="select * from project_list where 1=1 "; 
if (isset($_POST['search'])) { 
    $projectName  = $_POST['pName']; 
    $clientId  = $_POST['s_by_clientName']; 
    $departmentId = $_POST['s_by_department']; 
    $statusName = $_POST['s_by_status']; 
    if (!empty($projectName)) 
    { 
     $searchSql. = " AND projectName='$projectName'"; 
    } 
    if (!empty($clientId)) 
    { 
     $searchSql. = " AND client_id='$clientId'"; 
    } 
    if (!empty($departmentId)) 
    { 
     $searchSql. = " AND department_id='$departmentId'"; 
    } 
    if (!empty($statusName)) 
    { 
     $searchSql. = " AND status='$statusName'"; 
    } 
} 
$result=mysql_query($searchSql); 

注:请求mysql_query()在PHP 5.5已被弃用,在PHP 7中移除。请更新使用PDO的mysqli库。

+0

谢谢你这么多... @ Sanooj T –

+0

不客气我的朋友 –

+0

“)”在查询结束时不需要右括号 –

1

你可以建立一个increntale查询

<code> 
if (isset($_POST['search'])) { 
    $projectName  = $_POST['pName']; 
    $clientId  = $_POST['s_by_clientName']; 
    $departmentId = $_POST['s_by_department']; 
    $statusName = $_POST['s_by_status']; 
    $my_sql = "select * from project_list "; 
    $my_where = ""; 
    if (!empty($projectName)) 
    { 
     if ($my_where = ""){ 
      $my_sql .= "where "; 
     } else { 
      $my_sql .= "and "; 
     } 
     $my_sql .= "projectName='$projectName'"; 

    } 
    if (!empty($clientId)) 
    { 

     if ($my_where = ""){ 
      $my_sql .= "where "; 
     } else { 
      $my_sql .= "and "; 
     } 
     $my_sql .= "client_id='$clientId'"; 

    } 
    if (!empty($departmentId)) 
    { 
     if ($my_where = ""){ 
      $my_sql .= "where "; 
     } else { 
      $my_sql .= "and "; 
     } 
     $my_sql .= "department_id='$departmentId'"; 


    } 
    if (!empty($statusName)) 
    { 
     if ($my_where = ""){ 
      $my_sql .= "where "; 
     } else { 
      $my_sql .= "and "; 
     } 
     $my_sql .= "status='$statusName'"; 

    } 
} 

1

这里我使用了列id作为primary key & auto-increment。根据列名称更改它。

$query = "SELECT * FROM project_list WHERE id is not null"; 

代码

<? 
if (isset($_POST['search'])) { 
    $projectName  = $_POST['pName']; 
    $clientId  = $_POST['s_by_clientName']; 
    $departmentId = $_POST['s_by_department']; 
    $statusName = $_POST['s_by_status']; 

    // Here I used coloumn 'id' as primary key & auto-increment. Change it as per your column name. 
    $query = "SELECT * FROM project_list WHERE id is not null" 

    if (!empty($projectName)) 
    { 
     $query. = " AND projectName='".$projectName."'"; 
    } 
    if (!empty($clientId)) 
    { 
     $query. = " AND client_id='".$clientId."'"; 
    } 
    if (!empty($departmentId)) 
    { 
     $query. = " AND department_id='".$departmentId."'"; 
    } 
    if (!empty($statusName)) 
    { 
     $query. = " AND project_list='".$statusName."'"; 
    } 

    $searchSql = mysql_query($query); 
}