MySQL 数据显示 php.如果选择显示所选数据,如果没有选择;显示整个数据.我该怎么做


MySQL Data show by php. If select show selected data, If no select; show whole data. How can I do this?

这是一个献血网站。如果有人想看到他的地区捐助者;他选择血-GRP,地区和地区。但如果他不选择面积字段,他什么也看不到。但我希望他看到整个地区的捐助者。我该怎么做?这是我的代码

$blood-grp=$_POST['blood-grp']; 
$district=$_POST['district']; 
$area=$_POST['area']; 

$sql="SELECT * FROM $tbl_name WHERE blood-grp='$blood-grp' && district='$district' && area='$area'";

使用 if 检查是否已设置。旁注:变量名称中不允许使用连字符 ( -

$blood_grp=$_POST['blood-grp'];
$area=$_POST['area'];
if (isset($_POST['district'])) {
  $district=$_POST['district']; 
  $sql = "SELECT * FROM $tbl_name WHERE `blood-grp`='$blood_grp' AND district='$district' AND area='$area'";
} else {
  $sql = "SELECT * FROM $tbl_name WHERE `blood-grp`='$blood_grp' AND area='$area'";
}

试试这个你会确保

如果他没有选择他的区域,那么如果用户有注册,那么带用户去纬度和经度

 if($_POST['area']=="")
 {
$sql="SELECT * FROM $tbl_name WHERE blood-grp='$blood-grp' AND  area='$userarea'";
 } else {
  $sql="SELECT * FROM $tbl_name WHERE blood-grp='$blood-grp' AND district='$district' AND area='$area'";
 }

您必须使用串联和 if 更结构化地写下查询。这样,只有用户选择的参数才会实际包含在查询中。

并且变量名称中不允许使用"-"字符,我将其更正为"_"。

$blood_grp=$_POST['blood_grp']; 
$district=$_POST['district']; 
$area=$_POST['area']; 

$sql="SELECT * 
      FROM $tbl_name
      WHERE ";
if(strlen($blood-grp) > 0) {
    $query .= "blood_grp = '$blood_grp' AND ";
}
if(strlen($district) > 0) {
    $query .= "district = '$district' AND ";
}
if(strlen($area) > 0) {
    $query .= "area = '$area' AND ";
}
//Remove final " AND " by cutting off last 5 characters to make the query valid:
$query = substr($query, 0, strlen($query) - 5);
echo $query;