使用注释元查询数据库

时间:2015-06-29 17:17:21

标签: php sql wordpress

我有一个wordpress评论框,其中包含2个自定义文件,名称和国家/地区,这些文件使用meta_key标记comment_namecomment_country写入数据库。我需要做的是显示这些评论,这些评论需要包括实际评论,以及2个自定义字段的值。我需要查询数据库,因为我需要检索所有注释,而不仅仅是对该特定页面的注释。

代码I(种类)具有:

<?php 
global $wpdb;
$querystr = " SELECT comment_content FROM $wpdb->comments INNER JOIN $wpdb->commentmeta ON meta_key = 'comment_name'";
$comment_info =  $wpdb->get_results($querystr, OBJECT);
echo '<ul>';
// display the results
foreach($comment_info as $info) { 
echo '<li class="commentBox"><p>'. $info->comment_content .'</p><h6>'. $info->meta_value .'</h6></li>'; 
}
echo '</ul>';                            
?>

正如您可能看到的那样,我需要获取comment_content中的wp_comments字段,但也要将其与2 meta_value的{​​{1}}相结合。我显然还没想出如何尝试将第二个meta_keys /值添加到我的代码中。

任何人都可以帮助我,因为我的智慧结束了!

更新 我现在可以查询我需要的信息。我不得不使用别名,所以我可以使用相应的值查询2个不同的meta_keys。代码:

meta_key

所以我现在需要做的是在循环中引用$querystr = " SELECT * FROM $wpdb->comments, $wpdb->commentmeta AS commentmeta1, $wpdb->commentmeta AS commentmeta2 WHERE $wpdb->comments.comment_ID = commentmeta1.comment_id AND $wpdb->comments.comment_ID = commentmeta2.comment_id AND commentmeta1.meta_key = 'comment_name' AND commentmeta2.meta_key = 'comment_country' ORDER BY $wpdb->comments.comment_date DESC"; $comment_info = $wpdb->get_results($querystr, OBJECT); commentmeta1来输出2个不同的值。我正在使用的代码:

commentmeta2

元值不会按原样输出,它基本上仅取我echo '<ul>'; // display the results foreach($comment_info as $info) { echo '<li class="commentBox"><p>' . $info->comment_content . '</p><h6>' . $info->meta_value['commentmeta1'] . ', ' . $info->meta_value['commentmeta2'] . '</h6></li>'; } echo '</ul>'; ('comment_country')的第一个字母,并为每个实例复制它(下图)。如果我只查询一个元键,我可以通过简单地运行commentmeta2来显示我的循环中的值。我如何根据我的查询简单地使用meta_values?

Img of current output

2 个答案:

答案 0 :(得分:0)

如何在SELECT声明中指定所需的列:

SELECT comment_content, comment_name, comment_country FROM ...

然后在您的HTML中引用它们$info->comment_name,依此类推。

如果您需要更多指导,则需要共享评论表的数据库模式。

答案 1 :(得分:0)

怀疑它!最终工作代码如下:

$querystr = " SELECT comment_content, commentmeta1.meta_value AS comment_name, commentmeta2.meta_value AS comment_country 
FROM $wpdb->comments, $wpdb->commentmeta AS commentmeta1, $wpdb->commentmeta AS commentmeta2 
WHERE $wpdb->comments.comment_ID = commentmeta1.comment_id 
AND $wpdb->comments.comment_ID = commentmeta2.comment_id 
AND commentmeta1.meta_key = 'comment_name' 
AND commentmeta2.meta_key = 'comment_country' ORDER BY $wpdb->comments.comment_date DESC";

$comment_info =  $wpdb->get_results($querystr, OBJECT);

echo '<ul>';
// display the results
foreach($comment_info as $info) { 
echo '<li class="commentBox"><p>' . $info->comment_content . '</p>
<h6>' . $info->comment_name . ', ' . $info->comment_country . '</h6></li>'; 
}

echo '</ul>';

我基本上需要将别名传递给SELECT并分配一个新的别名,我可以在循环中引用它。