我有这个问题
SELECT *
FROM `Products`
WHERE brand REGEXP '$brandFilter'
AND categories REGEXP '$categoryFilter'
AND color REGEXP '$colorFilter'
AND price BETWEEN '$priceMin' AND '$priceMax'
AND size REGEXP '$sizeFilter'我用PHP工作,每个值都可以是空的,如果值是空的,可以在SQL中检查吗?例如:如果'$brandFilter‘不为null
SELECT *
FROM Products
WHERE brand REGEXP '$brandFilter'可以在代码中做到这一点,但它非常长,因为有可能获得3个值为null
谢谢你的帮忙!
发布于 2020-11-22 17:22:18
从SQL的角度来看,您需要OR条件:
SELECT *
FROM Products
WHERE (brand REGEXP :brandFilter OR :brandFilter IS NULL)
AND (categories REGEXP :categoryFilter OR :categoryFilter IS NULL)
AND (color REGEXP :colorFilter OR :colorFilter IS NULL)
...您可能希望在应用程序中动态构建SQL子句,这可能会提高where代码的效率。
请注意,这使用的是绑定参数,而不是在查询字符串中连接变量。推荐阅读:How can I prevent SQL injection in PHP?。
https://stackoverflow.com/questions/64951421
复制相似问题