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