我可以在mysql查询中使用什么字符来表示所有结果?

时间:2012-10-14 23:56:08

标签: php mysql

我试图创建一个基于用户过滤器输入查询数据库的php脚本

基本上我想要

select * from table where parent_id = '$filter_value'

但是我想将默认值应用于$ filter_value,如果用户没有指定任何过滤器,它将生效,并将提取所有可能的结果。

我尝试使用*但它没有用......

4 个答案:

答案 0 :(得分:3)

两种方式:

  1. 将值与NULL进行比较

    SELECT * 
    FROM table
    WHERE ($filter_value IS NULL OR parent_id = '$filter_value')
    
  2. 根据$ 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 = ''

解决了问题:$