$wpdb->get_row() only returns a single row?

Why is it? I tried the same query in the console and it returned multiple rows. Here’s the query:

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

Read More

It keeps returning the same single row when there are several active users. Am I missing something?

Related posts

Leave a Reply

4 comments

  1. There are three ways to pull data from the database.

    1.$wpdb->get_var:use this to get a single value from the database table. Like if you want to count the total number of comments. You can do it in following way:

    <?php 
    $comment_count = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->comments;")); 
    echo '<p>Total comments: ' . $comment_count . '</p>';
    ?>
    

    2.$wpdb->get_row : To retrieve an entire table row you can use this.

    Example:

    <?php 
    $thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ) );
    echo $thepost->post_title; 
    ?>
    

    OR

    <?php 
    $thepost = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = 1" ), ARRAY_A );
    print_r ($thepost); 
    ?>
    

    By using the ARRAY_A parameter in get_row your post data is returned as an associative array. Alternatively, you could use the ARRAY_N parameter to return your post data in a numerically indexed array.

    3.$wpdb->get_results:Standard SELECT queries should use the get_results function for retrieving multiple rows of data from the database.

    <?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>';
    }
    ?>
    

    and you need the last one, as you can expect.

  2. my solution is simple..

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

    Use:

    <?php
    echo count_results();