我的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);
}
答案 0 :(得分:0)
我过去使用的一个技巧是写下我的where子句:
WHERE (myColumn = @neededVal or @neededVal is null)
and (secondColumn = @anotherVal or @anotherVal is null)
...你需要确保你不会受到性能影响 - 有时候SQL引擎在这种配方上没有做到最好(IIRC。)
但是这会让你到达你需要去的地方。如果填写了该值,它将过滤掉该值;如果它没有填写,条件将永远是真的。