构建一个长查询并有很多if语句 - 是否有更优雅的方式?

bir*_*ric 7 php mysql refactoring coding-style

我必须根据某些条件构建查询.有没有比我在下面做的更好的方式呢?它工作正常,但我可以看到,如果有更多的条件,它会相当快地失控,因为我检查每次检查新的条件是否满足任何先前的条件.

    $sql = "SELECT DISTINCT fkRespondentID FROM tblRespondentDayTime";

    if (!empty($day) || !empty($time) || !empty($sportID)) {

        $sql .= " WHERE";

        if (!empty($day)) {
            $sql .= " fldDay='$day'";
        }

        if (!empty($time)) {
            if (!empty($day)) {
                $sql .= " AND";
            }
            $sql .= " fldTime='$time'";
        }

        if (!empty($sportID)) {
            if (!empty($day) || !empty($time)) {
                $sql .= " AND";
            }
            $sql .= " fkRespondentID IN (SELECT fkRespondentID FROM tblRespondentSport WHERE fkSportID='$sportID')";
        }

    }
Run Code Online (Sandbox Code Playgroud)

Dan*_*anP 6

我会用旧"WHERE 1=1"技巧; 将此作为第一个条件添加,然后您可以在随后的每个语句中采用"AND"条件.