2017-05-25 90 views
0

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语句中做到这一点?

+0

你基本上是试图输出相同的一组数据的两倍。你可以做的是在单个查询中抓取所有**数据,然后根据你需要的两组不同的**结果**过滤它,避免需要第二个查询。 –

+0

可能的重复[如何在SQL SELECT中执行IF ... THEN?](https://stackoverflow.com/questions/63447/how-do-i-perform-an-if-then-in-一个-SQL选择) –

回答

0

这是我会怎么做:

$sql = "SELECT WORK_RECORD FROM worklist"; 
if($watch_person != "all"){ 
    $sql .= " WHERE PERSON_NO = '$watch_person'"; 
} 
0

您可以如下优化您的编码。

$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."'"); 
0

你可以有WHERE语句中的if else。

$sql = "SELECT WORK_RECORD 
     FROM worklist ". 
     ($watch_person == "all" ? "" : "WHERE PERSON_NO = '".$watch_person."'"); 
0

这样会更容易延长条件。

$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."' ";