问题描述
为什么?我在控制台中尝试了相同的查询,并返回了多行。这是查询:
$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);
当有多个活动用户时,它会继续返回相同的单行。我错过了什么吗?
最佳解决方案
事实上,只有当你希望获得一个结果时,才能使用 get_row()
,否则可以使用 get_results()
次佳解决方案
从数据库中提取数据有三种方法。
1. $wpdb->get_var
:使用它从数据库表中获取单个值。喜欢,如果你想计数的评论总数。你可以这样做:
<?php
$comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;"));
echo '<p>Total comments: ' . $comment_count . '</p>';
?>
2. $wpdb->get_row
:要检索整个表行,您可以使用它。
例:
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
echo $thepost->post_title;
?>
要么
<?php
$thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
print_r ($thepost);
?>
通过在 get_row 中使用 ARRAY_A
参数,您的帖子数据作为关联数组返回。或者,您可以使用 ARRAY_N
参数以数字索引的数组返回您的帖子数据。
3. $wpdb->get_results
:标准 SELECT
查询应使用 get_results 函数从数据库中检索多行数据。
<?php
$allposts = $wpdb->get_results( $wpdb->prepare("SELECT ID, post_title FROM $wpdb->posts WHERE post_status = 'publish'") );
foreach ($allposts as $singlepost) {
echo '<p>' .$singlepost->post_title. '</p>';
}
?>
你需要最后一个,你可以期待。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。