在mysql中创建动态where子句

时间:2010-06-19 03:44:10

标签: mysql

是否可以根据用户选择的内容动态修改where条件? 我正在创建一个有一些下拉菜单的表单。例如,给定下面的查询,客户可以基于价格,邻居和财产类型(即公寓,联排别墅,单身家庭等)在数据库中搜索属性。但是,也可以选择退回任何类型的财产,但要考虑其他标准。有没有办法动态修改where子句,具体取决于用户是否想要返回所有属性类型?

SELECT a.id, property_id, price, name as section_name, baths, beds 
FROM 
    properties a, subdivision b
WHERE 
    a.subdivision = b.id and
    property_type = $property_type
ORDER by id"

2 个答案:

答案 0 :(得分:0)

动态构建您的查询。我不是一个PHP编码器所以这可能在语法上不正确,但它看起来应该是这样的:

$query = <<<QUERY
SELECT a.id, property_id, price, name as section_name, baths, beds 
FROM 
    properties a, subdivision b
WHERE 
    a.subdivision = b.id
QUERY;

if ($property_type)
{
   $query = $query . " and property_type = $property_type ";
}

$query = $query . " order by id";

$result = mysql_query($query);

答案 1 :(得分:0)

如果您使用Java编写代码,请查看iBatis - 它非常支持动态查询。

http://ibatis.apache.org/