SQL one select通过PHP变量使用不同的where子句
与此不同,我询问的是一个PHP变量 我试图在我的PHP文件上创建一个SQL SELECT语句,它可以选择所有人或单个人SQL one select通过PHP变量使用不同的where子句,php,sql,Php,Sql,与此不同,我询问的是一个PHP变量 我试图在我的PHP文件上创建一个SQL SELECT语句,它可以选择所有人或单个人 if ( $watch_person == "all") { $sql = "SELECT WORK_RECORD FROM worklist "; } else { $sql = "SELECT WORK_RECORD FROM worklist WHERE PERSON_NO =
if ( $watch_person == "all") {
$sql = "SELECT WORK_RECORD
FROM worklist
";
} else {
$sql = "SELECT WORK_RECORD
FROM worklist
WHERE PERSON_NO = '".$watch_person."'
";
}
有没有一种方法可以在一条SQL语句中实现这一点?您可以如下优化编码
$sql = "SELECT WORK_RECORD
FROM worklist WHERE ";
if ( $watch_person == "all") {
$sql .= " 1=1";
} else {
$sql .= " PERSON_NO = '".$watch_person."' ";
}
或
$sql = "SELECT WORK_RECORD
FROM worklist WHERE ". ($watch_person == "all" ? "1=1" : "PERSON_NO = '".$watch_person."'");
您可以在if-else中使用where语句
$sql = "SELECT WORK_RECORD
FROM worklist ".
($watch_person == "all" ? "" : "WHERE PERSON_NO = '".$watch_person."'");
在条件允许的情况下,将更容易扩展
我会这样做:
$sql = "SELECT WORK_RECORD FROM worklist";
if($watch_person != "all"){
$sql .= " WHERE PERSON_NO = '$watch_person'";
}
您实际上是在尝试两次输出同一组数据。您可以在一个查询中获取所有数据,然后根据所需的两组不同结果在PHP中对其进行过滤,从而避免需要第二个查询
$sql = "SELECT WORK_RECORD FROM worklist";
if($watch_person != "all"){
$sql .= " WHERE PERSON_NO = '$watch_person'";
}