构造大型PHP查询

时间:2015-12-15 23:48:08

标签: php wordpress

我正在使用自定义字段的WordPress,并尝试转换最初为pjjtextbase(文本文件数据库)编写的查询,以搜索csv文件以查找租赁/销售的匹配属性。

据我所知,要使用自定义字段查询WP中的自定义帖子,我会写一些类似的内容;

        $location = preg_replace('/^-|-$|[^-a-zA-Z0-9]/', '', $_GET['location']); 
        $type = preg_replace('/^-|-$|[^-a-zA-Z0-9]/', '', $_GET['type']); 
        $buyrent = preg_replace('/^-|-$|[^-a-zA-Z0-9]/', '', $_GET['buyrent']); 
        $min_val =preg_replace('/[^0-9]/', '', $_GET['min_val']);
        $room_no_min = preg_replace('/[^0-9]/', '', $_GET['room_no_min']); 
        // This replaces characters in the input string if need be for security reasons         

$args =

        array(
            'post_type'  => 'properties',
            'meta_query' => 

            array(
                'key'     => 'wp_location',
                'value'   => $location,
                'compare' => '=',
            )

        );
            $results = new WP_Query($args);

但是当我看到程序员编写的代码时

/***** THESE VALUES NEEDED FOR SELECT BOX *****/
$locations = ptb_listUnique($info, 'Property_Location');
$property_type = ptb_listUnique($info, 'Property_Type');
$property_buy_rent = ptb_listUnique($info, 'Buy_Rent');



//check property
$query = Array();
if(!empty($_GET['location'])) { 
   $query[] = "'Property_Location' == '".$_GET['location']."'";
}
if(!empty($_GET['type'])) { 
   $query[] = "'Property_Type' == '".$_GET['type']."'";
}
if(!empty($_GET['buyrent'])) { 
   $query[] = "'Buy_Rent' == '".$_GET['buyrent']."'";
}


//check price
if(empty($_GET['buyrent']) || $_GET['buyrent']=="Buy"){
if(!empty($_GET["min_val_buy"]) && is_numeric($_GET["min_val_buy"])){
     $min_val_buy = $_GET["min_val_buy"];
}
     if(!empty($_GET["max_val_buy"]) && is_numeric($_GET["max_val_buy"])){
     $max_val_buy = $_GET["max_val_buy"];
}

$min_val_buy = min($_GET["min_val_buy"], $_GET["max_val_buy"]);
$max_val_buy = max($_GET["min_val_buy"], $_GET["max_val_buy"]);

$query[] = "'Price_Rent' >= '".$min_val_buy."'";
$query[] = "'Price_Rent' <= '".$max_val_buy."'";

}else{

if(!empty($_GET["min_val_rent"]) && is_numeric($_GET["min_val_rent"])){
     $min_val = $_GET["min_val_rent"];
}
     if(!empty($_GET["max_val_rent"]) && is_numeric($_GET["max_val_rent"])){
     $max_val = $_GET["max_val_rent"];
}

$min_val_rent = min($_GET["min_val_rent"], $_GET["max_val_rent"]);
$max_val_rent = max($_GET["min_val_rent"], $_GET["max_val_rent"]);

$query[] = "'Price_Rent' >= '".$min_val_rent."'";
$query[] = "'Price_Rent' <= '".$max_val_rent."'";

}

//check bedrooms
if(!empty($_GET["room_no_min"]) && is_numeric($_GET["room_no_min"])){
     $room_min_val = $_GET["room_no_min"];
}
if(!empty($_GET["room_no_max"]) && is_numeric($_GET["room_no_max"])){
     $room_max_val = $_GET["room_no_max"];
}

$room_min_val = min($_GET["room_no_min"], $_GET["room_no_max"]);
$room_max_val = max($_GET["room_no_min"], $_GET["room_no_max"]);

$query[] = "'No_Bedrooms' >= '".$room_min_val."'";
$query[] = "'No_Bedrooms' <= '".$room_max_val."'";

//Now build the query to search
$query = implode(' AND ', $query);

我突然意识到他没有创建多个查询,然后使用IMPLODE来组合它们,而是创建一个完整的字符串,然后使用IMPLODE添加AND来创建实际的查询。

我在WP中的自定义字段与大代码变量完全相同,除了它们之前是wp _。

所以我的问题是如何将他的代码转换为WordPress查询?

0 个答案:

没有答案