注意:已更新,因为我认为我需要使用与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;
答案 0 :(得分:0)
我认为这是用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 ...
。如果您希望我进一步解释这两个问题,请告诉我。
参考: