我试图创建一个基于用户过滤器输入查询数据库的php脚本
基本上我想要
select * from table where parent_id = '$filter_value'
但是我想将默认值应用于$ filter_value,如果用户没有指定任何过滤器,它将生效,并将提取所有可能的结果。
我尝试使用*但它没有用......
答案 0 :(得分:3)
两种方式:
将值与NULL进行比较
SELECT *
FROM table
WHERE ($filter_value IS NULL OR parent_id = '$filter_value')
根据$ filter_value是否包含值动态创建SQL。如果没有,您的查询应该只是:
SELECT *
FROM table
答案 1 :(得分:2)
检查过滤器变量是否为null,或者只是将查询包装在if语句中:
SELECT * FROM baz WHERE foo = :bar OR :bar IS NULL
答案 2 :(得分:1)
这不是你提出的问题,但它非常接近,我认为这是一个更好的方法。你可以这样做:
if ( empty( $filter_value ) === false ) {
select * from table where parent_id = '$filter_value'
} else {
select * from table
}
这只是一个例子,不是很好的PHP语法。
但是这个想法是,如果你想根据某些东西有不同的行为,那么你应该用那种方式编程,例如,用if,这样,你知道在每种情况下会发生什么并控制情况,而不是取决于mysql对传递的空值的作用。
答案 3 :(得分:0)
好的,我尝试只插入一个空格作为默认的var值,如
$filter_value = ''
解决了问题:$