$ wpdb-get_row () retorna apenas uma única linha?

19

Por que isso? Eu tentei a mesma consulta no console e retornou várias linhas. Aqui está a consulta:

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

Ele continua retornando a mesma linha quando há vários usuários ativos. Estou faltando alguma coisa?

    
por Joann 08.04.2011 / 05:42
fonte

4 respostas

32

De fato, use get_row() somente quando você espera obter um resultado, senão você pode usar get_results()

    
por Javier Villanueva 08.04.2011 / 05:52
fonte
37

Existem três maneiras de extrair dados do banco de dados.

1. $wpdb->get_var : use isto para obter um único valor da tabela do banco de dados. Como se você quiser contar o número total de comentários. Você pode fazer isso da seguinte maneira:

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

2. $wpdb->get_row : Para recuperar uma linha inteira da tabela, você pode usar isso.

Exemplo:

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

Usando o parâmetro ARRAY_A em get_row, seus dados de postagem são retornados como uma matriz associativa. Como alternativa, você pode usar o parâmetro ARRAY_N para retornar seus dados de postagem em uma matriz numericamente indexada.

3. $wpdb->get_results :% consultas% co_de padrão devem usar a função get_results para recuperar várias linhas de dados do banco de dados

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

e você precisa do último, como você pode esperar.

    
por enam 08.04.2011 / 09:00
fonte
1
$wpdb->get_row('query', output_type, row_offset);

row_offset (integer) A linha desejada (0 sendo o primeiro). O padrão é 0.

va enlace

    
por test 01.09.2011 / 17:57
fonte
0

minha solução é simples ..

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

Uso:

<?php
echo count_results();
    
por Bryan Contreras 16.11.2016 / 10:05
fonte

Tags