1

注意:更新,因为我认为我需要使用类似于 CASE 的东西

我有一个具有 3 个地址输入的表单:

  1. 市郊
  2. 邮政编码
  3. 状态

我想使用这 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;
    
4

1 回答 1

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 ...如果您希望我进一步解释最后两个,请告诉我。

参考:

- PHP isset

- PHP 未设置

于 2013-09-05T20:39:27.370 回答