SQL选择不同的where子句由PHP变量
问题描述:
与How do I perform an IF…THEN in an SQL SELECT? 不同,我在询问一个PHP变量。SQL选择不同的where子句由PHP变量
我想在我的PHP文件上可以选择所有人或单身人士创建一个SQL SELECT语句。
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";
if($watch_person != "all"){
$sql .= " WHERE PERSON_NO = '$watch_person'";
}
答
您可以如下优化您的编码。
$sql = "SELECT WORK_RECORD
FROM worklist WHERE ";
if ($watch_person == "all") {
$sql .= " 1=1";
} else {
$sql .= " PERSON_NO = '".$watch_person."' ";
}
OR
$sql = "SELECT WORK_RECORD
FROM worklist WHERE ". ($watch_person == "all" ? "1=1" : "PERSON_NO = '".$watch_person."'");
答
你可以有WHERE语句中的if else。
$sql = "SELECT WORK_RECORD
FROM worklist ".
($watch_person == "all" ? "" : "WHERE PERSON_NO = '".$watch_person."'");
答
这样会更容易延长条件。
。
$sql = "SELECT WORK_RECORD
FROM worklist WHERE 1=1 ";
if ($watch_person != "all")
$sql .= " and PERSON_NO = '".$watch_person."' ";
if ($watch_person2 != "another")
$sql .= " and example = '".$watch_person2."' ";
你基本上是试图输出相同的一组数据的两倍。你可以做的是在单个查询中抓取所有**数据,然后根据你需要的两组不同的**结果**过滤它,避免需要第二个查询。 –
可能的重复[如何在SQL SELECT中执行IF ... THEN?](https://stackoverflow.com/questions/63447/how-do-i-perform-an-if-then-in-一个-SQL选择) –