我正在努力解决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列中是否存在某些内容并且仅在存在某些内容时才回显该值的最佳方法是什么?
我希望有人能指出我正确的方向。
答案 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";
}