如果行大于0,如何显示查询结果

时间:2016-02-26 12:02:34

标签: php sql wordpress

我正在努力解决worpdress中的问题。

我使用自定义字段来显示值。不幸的是,当从编辑屏幕中删除该值时,我在posteta表中留下了空白值。

所以当我的查询运行时:

$month_results = $wpdb->get_results("SELECT meta_value AS monthprice FROM ch_postmeta 
WHERE meta_key = 'per_month' AND post_id = $productid");

if(!empty($month_results)) {
    foreach($month_results as $permonth) {
        echo $permonth->monthprice . 'per month';
    }
} else { 
echo "None found";} 

我的表包含以下内容:

meta_id     post_id     meta_key      meta_value
1398        126         per_month  

per_month

我可以看到"每个月"在我的页面上,旁边有一个空值。

我的问题是,在我的查询中检查meta_value列中是否存在某些内容并且仅在存在某些内容时才回显该值的最佳方法是什么?

我希望有人能指出我正确的方向。

5 个答案:

答案 0 :(得分:2)

您可以在查询中使用IS NOT NULL,如下所示:

SELECT meta_value AS monthprice FROM ch_postmeta WHERE 
 meta_value IS NOT NULL AND meta_key = 'per_month' AND post_id = $productid

这将删除meta_value为空的记录。

答案 1 :(得分:1)

您可以使用以下内容检查$ permonth-> monthprice中是否有值。

if($permonth->monthprice != '') echo $permonth->monthprice . 'per month';

答案 2 :(得分:1)

有很多种方法可以显示或不显示:

在查询中:

SELECT meta_value AS monthprice FROM ch_postmeta 
WHERE meta_key = 'per_month' AND post_id = $productid and (meta_value is not NULL or meta_value<>'')

用php:

if(!empty($month_results)) {
    foreach($month_results as $permonth) {
        if($permonth->monthprice)
             echo $permonth->monthprice . 'per month';
    }
} else { 
echo "None found";
}

答案 3 :(得分:1)

修改您的查询,只返回meta_value具有值的行:

Delete from tbl_products:
copy tbl_products from 'D:\AppFolder\DataTran\tbl_products).csv' with csv headers;

答案 4 :(得分:1)

请尝试以下代码:

$month_results=$wpdb->get_results('SELECT `meta_value` AS `monthprice` FROM ' . $wpdb->prefix . 'postmeta 
WHERE `meta_key` = \'per_month\' AND `post_id` = \'$productid\' and (`meta_value` IS NOT NULL and `meta_value`!=\'\');');

if (!is_null($month_results) && count($month_results) > 0)
{
    foreach ($month_results as $permonth)
    {
        echo $permonth->monthprice . 'per month';
    }
}
else
{
    echo "None found";
}