Php 选择一个大列表(带过滤器)和PDO

Php 选择一个大列表(带过滤器)和PDO,php,mysql,pdo,Php,Mysql,Pdo,我有一个大的数据室列表,需要有能力被用户过滤。最小/最大卧室数量、最小/最大价格范围、郊区、物业类型 我已经创建了一个带有过滤选项的数组,但是只有选择了所有选项,查询才会起作用。我需要有它的工作能力,只有一个选项被选中 我该怎么做呢 $query = $db->prepare("SELECT *, (SELECT MIN(FileName) as FileName FROM `images` WHERE `

我有一个大的数据室列表,需要有能力被用户过滤。最小/最大卧室数量、最小/最大价格范围、郊区、物业类型

我已经创建了一个带有过滤选项的数组,但是只有选择了所有选项,查询才会起作用。我需要有它的工作能力,只有一个选项被选中

我该怎么做呢

$query = $db->prepare("SELECT *, (SELECT MIN(FileName) as FileName 
                    FROM `images` 
                    WHERE `images`.`PropertyID` = `property`.`PropertyID` order by `images`.`id` asc) 
                    as FileName 
                    FROM `property`
                    INNER JOIN `features` ON `property`.`PropertyID` = `features`.`PropertyID`
                    WHERE `property`.`Active` = '1' AND `property`.`homelink` = '0'
                    AND `property`.`Suburb` =  :suburb
                    AND `features`.`Bedrooms` >=  :bedroom_min
                    AND `features`.`Bedrooms` <=  :bedroom_max
                    AND `property`.`Rent` >=  :price_min
                    AND `property`.`Rent` <=  :price_max
                    AND `property`.`PropertyType` =  :property_type
                    GROUP BY `property`.`propertyid`
                    ORDER BY `property`.`AdvHeading` = 'LEASED!' ASC, `property`.`rent` DESC");


$vars = array(suburb,bedroom_min,bedroom_max,price_min,price_max,property_type);
foreach($vars as $key) {
    ${$key} = (isset($_GET[$key]) === true) ? $_GET[$key] : '';
    $query->bindValue(':'.$key.'', ${$key}, PDO::PARAM_STR);    
}

try {
    $query->execute();

    $rows = $query->fetchAll(PDO::FETCH_ASSOC);
    echo '<pre>', print_r($rows, true), '</pre>';

} 
catch(PDOException $e){
    die($e->getMessage());  
}

您需要动态创建查询。这是一个


请注意,由于比较运算符不同,无法将其包装在循环中。最好一个接一个地手动完成,就像在参考问题中一样。

哦,天哪!当你得到答案时,当你看到答案如此明显时,你难道不恨吗!非常感谢,这将非常有效