簡體   English   中英

使用CASE生成SQL WHERE子句

[英]Use CASE to build SQL WHERE clause

注意:已更新,因為我認為我需要使用與CASE類似的東西

我有一個包含3個地址輸入的表格:

  1. 市郊
  2. 郵編

我想使用這3個表單字段來填充sql查詢的where子句(請參見下文)。

  1. 因此,如果未輸入任何輸入字段,則沒有where子句(並且所有行均已提取)
  2. 如果輸入了一個或多個輸入字段,則使用輸入的PHP變量構建where子句。

     $sql = <<<SQL SELECT cs.customerRefId, cc.firstName, cc.lastName, cc.email, cc.phone, cc.mobile, cs.seekingAddressSuburb, cs.seekingAddressPostcode, cs.seekingAddressState FROM customer_seeking cs LEFT JOIN customer_contact cc ON cc.customerRefId = cs.customerRefId WHERE cs.seekingAddressSuburb = $suburb cs.seekingAddressPostcode = $postcode cs.seekingAddressState = $state SQL; 

我認為這是用php腳本編寫的,如果是這樣,這對您來說應該起作用:

$sql = "SELECT 
cs.customerRefId,
cc.firstName,
cc.lastName,
cc.email,
cc.phone,
cc.mobile,
cs.seekingAddressSuburb, 
cs.seekingAddressPostcode, 
cs.seekingAddressState
FROM 
customer_seeking cs
LEFT JOIN
customer_contact cc ON cc.customerRefId = cs.customerRefId";
//isset checks to see if the variable has a value set at all
if(isset($suburb) or isset($postcode) or isset($state)){
    $sql .= " WHERE ";
    if(isset($suburb)){ $sql .= " cs.seekingAddressSuburb = $suburb ";}
    if(isset($postcode)){ $sql .= " cs.seekingAddressPostcode = $postcode ";}
    if(isset($state)){ $sql .= " cs.seekingAddressState = $state ";}
}

如果您之前已經為這些變量設置了值,還有其他方法。 將它們重置為unset($suburb)或者將它們設置為默認值,以檢查它們是否不再等於該默認值$suburb = '' ... if($suburb != '' or ...我知道您是否要我進一步解釋這最后兩個。

參考:

-PHP設置

-PHP未設置

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM