Mysql WHERE子句帮助

时间:2011-07-10 07:58:50

标签: php mysql

如何在一个可以获取所有记录的语句中使用WHERE MySQL子句?我有条件地设置了WHERE条件。像...

if (this) {
    $mycondition=1;
} elseif (that {
    $mycondition=????
}

'SELECT * FROM table WHERE category='.$mycondition

????的价值应该是多少?所以当我将它传递给sql语句时,它会获取所有记录。我当时认为WHERE category ='*'可能有用,但事实并非如此。

3 个答案:

答案 0 :(得分:2)

您需要逐个构建WHERE条件:

  • 以空数组开头
  • 根据搜索表单输入添加一些条件(例如添加“category = 1”或“name like ...”)
  • implode(“AND”,$ array)会将条件粘在一起
  • 在SQL中连接它
  • 如果没有条件,请不要放置where子句

答案 1 :(得分:2)

最好的答案是根本没有WHERE条款,如果你没有条件可以满足peufeu答案的一部分:

SELECT * FROM table;

完全有效。

但是,如果您处于必须拥有WHERE条款的情况下(或者更容易拥有条款的情况),请按照Nanne的建议,并将“始终为真”的条件作为您的第一条款,所以像:

$query = 'SELECT * FROM TABLE WHERE true';
if (this) {
    $query = $query . ' AND column=this';
}

答案 2 :(得分:1)

你可以使用这个

if(this){
   $mycondition=" category=1";
}elseif(that{
   $mycondition= " 1"; //1 = 'true'. You could also use "1=1
}

'SELECT * FROM table WHERE '.$mycondition