条件使用OR的多个

时间:2018-04-16 18:43:35

标签: php sql

我的SQL代码存在问题。 我需要针对输入是可选的不同列测试多个条件。目前,除非两个输入字段都具有值,否则代码将不会执行。我的代码如下:

        if((empty($fname) === false or empty($lname) === false) && $date1 == null && $date2 == null)
        {
        $result = mysqli_query($con,"SELECT u.FirstName AS 'First Name', u.LastName AS 'Last Name' , CAST(n.CreatedOn AS date) AS 'Date' , s.SportName AS 'Sport', n.DocumentID AS 'Document ID', n.DocumentName AS 'PDF'
            FROM users u 
            INNER JOIN ncaadocuments n
            ON u.UserID = n.UserID 
            INNER JOIN userathletes a 
            ON n.UserID = a.UserID
            INNER JOIN sport s
            ON a.SportID = s.SportID
            WHERE n.SchoolID = ('$current_user->ID') AND
            (u.FirstName LIKE '%$fname%' OR 
            u.LastName LIKE '%$lname%')
            GROUP BY u.LastName
            ORDER BY n.CreatedOn");
        echo $fname;
        echo $lname;
        show_results($result);

        }

1 个答案:

答案 0 :(得分:0)

我过去使用的一个技巧是写下我的where子句:

WHERE (myColumn = @neededVal or @neededVal is null)
    and (secondColumn = @anotherVal or @anotherVal is null)

...你需要确保你不会受到性能影响 - 有时候SQL引擎在这种配方上没有做到最好(IIRC。)

但是这会让你到达你需要去的地方。如果填写了该值,它将过滤掉该值;如果它没有填写,条件将永远是真的。