[英]Use CASE to build SQL WHERE clause
注意:已更新,因為我認為我需要使用與CASE類似的東西
我有一個包含3個地址輸入的表格:
我想使用這3個表單字段來填充sql查詢的where子句(請參見下文)。
如果輸入了一個或多個輸入字段,則使用輸入的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 ...
我知道您是否要我進一步解釋這最后兩個。
參考:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.