$ wpdb-> get_row()只返回一行?


21

为什么?我在控制台中尝试了相同的查询,它返回了多行。这是查询:

$this->wpdb->get_row("SELECT * FROM ".$this->wpdb->users." WHERE status = 'active'", ARRAY_A);

当有多个活动用户时,它将继续返回同一行。我想念什么吗?

Answers:



40

有三种方法可以从数据库中提取数据。

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

通过使用ARRAY_Aget_row中的参数,您的帖子数据将作为关联数组返回。或者,您可以使用ARRAY_N参数以数字索引数组形式返回帖子数据。

3 .:$wpdb->get_results标准SELECT查询应使用get_results函数从数据库中检索多行数据。

<?php 
global $wpdb;
$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>';
}
?>

正如您所料,您需要最后一个。


精彩的细节示例..
pixelngrain

当然!为什么不..
pixelngrain


0

我的解决方法很简单..

<?php
function count_results() {
    # use the data base
    global $wpdb;

    # Query to count all results from one table
    $sql_count_results = '
        SELECT count(*) as count
        FROM `YOUR_TABLE`;';

    # Ejecute function
    $results = $wpdb->get_row( $sql_count_results , OBJECT );

    # Return results
    return $results->count;
}

使用:

<?php
echo count_results();

4
如果您还可以解释该代码除了发布之外的功能,那就太好了。
bravokeyl

这将对表中的行进行计数,这不是对OP问题的答案。
alexg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.