0

假设我的 SQL 表有列Title, PriceYearsOld并且我想使用来自 html 页面的输入表单来搜索匹配的结果。

我希望用户能够将他们希望的任何输入表单留空。因此,如果他们将所有字段留空,它将返回每个条目。如果他们Title留空但输入 amaxPrice然后它将显示所有价格和maxAge年龄低于他们提交的项目,无论标题如何。maxPricemaxAge

我是否必须使用 if 语句考虑空白/非空白字段条目的每个组合?还是有更好的方法来做到这一点?

例如,我想避免看起来像这样的代码:

 if($_POST['titleSearch' == "") {
    if($_POST['maxAge'] == NULL) {
        if($_POST['maxPrice'] == NULL) {
            $query = $conn->prepare("SELECT * FROM table");
    }
    else if($_POST['maxAge'] != NULL) {
        if($_POST['maxPrice'] == NULL) {
            $query = $conn->prepare("SELECT * FROM table 
                WHERE age <  $_POST['maxAge'])";
        }

      # etc etc etc

    }
} 

任何帮助将不胜感激,谢谢!

4

1 回答 1

0

更有效的方法是:

$tSet = strlen($_POST['titleSearch']);
$aSet = strlen($_POST['maxAge']);

if(!$tSet && !$aSet){
    $query = $conn->prepare("SELECT * FROM table");
} else if ($tSet && !$aSet){
    $query = $conn->prepare("SELECT * FROM table WHERE title=" . $_POST['titleSearch']);
}
于 2013-03-28T02:16:50.677 回答