0

私は現在、特定の価格範囲内にあるプロパティの数をカウントしようとしていますが、実行しているクエリは1の値のみを返します。明らかに私は何か間違ったことをしています-そしてそれはMySQL/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); 

よろしくお願いします。

4

2 に答える 2

4

get_results関数として使用するとget_var 、データベースから単一の変数が返されます。

$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); 

またはすべてをカウントします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;
于 2012-09-23T19:30:40.150 に答える
1

行数に直接関心がある限り、次のようになります。

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

ただし、Mihai Iorgaの回答は、すべてのデータをフェッチする必要がある場合、またはその1つの変数の隣の結果セットを実際に処理しない場合に、データベース内の(juergen dによってコメントされているように)カウントする必要がある場合に、2つの非常に公平なポイントを上げると思います。

于 2012-09-23T19:36:45.583 に答える