MYSQL选择具有多个条件的查询,如果输入不为null

时间:2016-10-17 15:44:02

标签: php mysql

我必须搜索具有多个输入值的多个条件的表,并且仅当查询不为空时,输入值才应包含在查询中。

php接收像

这样的变量
$username=$_GET["username"];
$uniqueid=$_GET["uniqueid"];
$tag=$_GET["tag"];
$location=$_GET["location"];

变量可能为null或带有一些字符串,我想避免查询中的变量为null。

假设没有变量为null,那么我的查询应该是

select NAME from TABLE_NAME where USERNAME=$username AND INIQUEID=$uniqueid AND TAG=$tag AND LOCATION=$location;

in-case $username为null

select NAME from TABLE_NAME where INIQUEID=$uniqueid AND TAG=$tag AND LOCATION=$location;

所以我需要为每个条件创建不同的查询,或者是否存在任何共存的方式?

1 个答案:

答案 0 :(得分:2)

检查一下,

<?php

$query = "SELECT NAME  FROM TABLE_NAME WHERE ";

$flag = 0;
if(!empty($username)){
   $query .= " USERNAME='$username' ";
   $flag = 1;
}
if(!empty($uniqueid)){
   if($flag == 1){
        $query .= " AND ";
   }
   $query .= " INIQUEID='$uniqueid' ";
   $flag = 1;
}
if(!empty($tag)){
   if($flag == 1){
        $query .= " AND ";
   }    
   $query .= " TAG='$tag' ";
   $flag = 1;
}
if(!empty($location)){
   if($flag == 1){
        $query .= " AND ";
   }     
   $query .= " LOCATION='$location' ";
}

?>