Php 其他Where字段

Php 其他Where字段,php,mysql,sql,wordpress,Php,Mysql,Sql,Wordpress,我正在尝试添加另一个WHERE查询,但我一点也不高兴 我有一个包含三个字段的表单:price、minu-price和max-price 我增加了这一行: WHERE 'price' BETWEEN 'property_min_price' AND 'property_max_price' 这对我来说似乎是合乎逻辑的,但它不起作用。有什么建议吗?谢谢 /** * Set the Query */ private function setQuery() { $sql = "

我正在尝试添加另一个WHERE查询,但我一点也不高兴

我有一个包含三个字段的表单:price、minu-price和max-price

我增加了这一行:

WHERE 'price' BETWEEN 'property_min_price' AND 'property_max_price'
这对我来说似乎是合乎逻辑的,但它不起作用。有什么建议吗?谢谢

/**
* Set the Query
*/
private function setQuery()
{
    $sql = "
        SELECT 
        p.post_title AS title,
        p.ID AS id," .
        $this->sqlFieldVars() . "
        lat.meta_value AS latitude,
        lng.meta_value AS longitude,
        ( " . $this->query_data['diameter'] . " * acos( cos( radians(@origlat) ) * cos( radians( lat.meta_value ) ) 
        * cos( radians( lng.meta_value ) - radians(@origlng) ) + sin( radians(@origlat) ) * sin(radians(lat.meta_value)) ) )
        AS distance
        FROM " . $this->query_data['post_table'] . " AS p
        LEFT JOIN " . $this->query_data['meta_table'] . " AS lat
        ON p.ID = lat.post_id AND lat.meta_key = '" . $this->query_data['lat_field'] . "'
        LEFT JOIN " . $this->query_data['meta_table'] . " AS lng
        ON p.ID = lng.post_id AND lng.meta_key = '" . $this->query_data['lng_field'] . "'" . 
        $this->sqlFieldJoins() . "      
        WHERE lat.meta_value
            BETWEEN @origlat - (@distance / @dist_unit)
            AND @origlat + (@distance / @dist_unit)
        AND lng.meta_value
            BETWEEN @origlng - (@distance / (@dist_unit * cos(radians(@origlat))))
            AND @origlng + (@distance / (@dist_unit * cos(radians(@origlat))))
        AND `post_type` = '" . $this->query_data['post_type'] . "'
        AND `post_status` = 'publish'
        WHERE 'price' BETWEEN 'property_min_price' AND 'property_max_price'
        HAVING distance < @distance
        ORDER BY distance\n" . 
        $this->sqlLimit() . ";";
    $this->sql = $sql;
}

通常,SQL字符串的末尾只有一个WHERE语句。我注意到您有几个连接,后面是WHERE语句,紧接着是第二个WHERE语句。

您是否尝试过将第二个WHERE改为AND? 和post_status='publish' “property\u min\u price”和“property\u max\u price”之间的“price”

只能有一个WHERE子句。要向现有WHERE添加另一个条件,请使用和:


此外,我想,应该对列名使用反勾号,而不是单引号。但是我不是MySQL的人,所以我不确定…

你能分享你的错误吗?当我添加那一行时,表单根本不起作用。你有两个where子句…只允许一个where子句。使用和添加新条件。$this->query_data['property_min_price']=get_option['property_min_price']$此->查询_数据['property_max_price']=get_选项['property_max_price']$此->查询_数据['price']=获取_选项'price';这可能是问题吗?对不起,我不知道那个接口,所以我无法回答。除了SQL我什么都不知道……这就是问题所在:$this->query_data['property_min_price']=get_option['property_min_price']$此->查询_数据['property_max_price']=get_选项['property_max_price']$此->查询_数据['price']=获取_选项'price';正如我尝试使用AND而不是WHERE一样,仍然没有乐趣。@dmt如果query_data['value']是您在别处声明的键值数组,而get_option['option_name']是WordPress文件wp includes/option.php中声明的选项,那么这可能是您出现问题的原因。在创建SQL字符串之前,您是否尝试过输出这些变量的值?
... AND `post_status` = 'publish'
    AND `price` BETWEEN 'property_min_price' AND 'property_max_price' ...