我有一个MYSQL全文搜索,匹配我的数据库中的项目,这很好 .
$select = "SELECT * from menu WHERE MATCH(item) AGAINST('$this->food') ";
从那里我根据用户想要过滤的内容细化查询 . 我有2个过滤器, vegetarian and breadtype
if(isset($this->vegetarian)) {
echo $select .= " AND vegetarian='$this->vegetarian'";
}
if(isset($this->bread)) {
echo $select .= " AND bread='$this->bread'";
}
这附加了fulltext语句,现在这完全可以工作,虽然我的问题是如果用户不搜索任何内容(空字符串),我希望它返回数据库中的所有结果 .
if(empty($this->food)) { $select = "SELECT * from menu"; }
现在这意味着我不能使用上面的if语句附加$ select语句,而是必须使用WHERE语句 - 但这意味着添加2个额外的if语句来补偿它 . 无论如何MYSQL都可以这样做 .
if(isset($this->vegetarian) && empty($this->food)) {
echo $select .= " WHERE vegetarian=$this->vegetarian";
}
2 回答
你可以简单地使用
WHERE 1=1
然后追加其余部分 . 如果没有额外的AND
或OR
,MySQL将忽略此部分 .或者我错过了什么?