2017-05-25 86 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."' ";