2012-09-23 44 views
0

我当前正在尝试计算特定价格范围内有多少个属性,并且我正在运行的查询返回的值仅为1.显然,我做错了某些事情 - 并且它不会帮助没有MySQL/PhP精明。 任何人都不会介意伸出援助之手吗?php - 计算数组中的值的数量

查询低于:

$apart = $wpdb->get_var("SELECT m1.post_id 
    FROM hj_postmeta m1 
    INNER JOIN hj_postmeta m2 ON m1.post_id = m2.post_id 
    WHERE m1.meta_key = 'price' 
    AND m1.meta_value 
    BETWEEN 50000 AND 74999 AND m2.meta_key = 'property_type' 
    AND m2.meta_value = 'apartment'"); 

$apartprice = count($apart); 

提前非常感谢。

+2

让数据库做计数'SELECT count(m1.post_id)as count ......' –

回答

4

使用get_resultsget_varfunction returns a single variable from the database

$apart = $wpdb->get_results("SELECT m1.post_id 
    FROM hj_postmeta m1 
    INNER JOIN hj_postmeta m2 ON m1.post_id = m2.post_id 
    WHERE m1.meta_key = 'price' 
    AND m1.meta_value 
    BETWEEN 50000 AND 74999 AND m2.meta_key = 'property_type' 
    AND m2.meta_value = 'apartment'"); 

$apartprice = count($apart); 

或COUNT所有get_var

$apart = $wpdb->get_var("SELECT COUNT(m1.post_id) 
    FROM hj_postmeta m1 
    INNER JOIN hj_postmeta m2 ON m1.post_id = m2.post_id 
    WHERE m1.meta_key = 'price' 
    AND m1.meta_value 
    BETWEEN 50000 AND 74999 AND m2.meta_key = 'property_type' 
    AND m2.meta_value = 'apartment'"); 

$apartprice = $apart; 
+0

非常感谢你,+1为一个梦幻般的答案! – Plastika

1

只要你是直的行数向前感兴趣:

$apart = $wpdb->get_var("...."); 
$apartprice = $wpdb->num_rows; 

但我认为Mihai Iorga's answer提出了两个非常公平的点,以防您需要获取所有数据,或者如果您没有实际处理该变量旁边的结果集,则(如上面通过juergen d评论的那样)计入数据库。