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

21

Por que é isso? Tentei a mesma consulta no console e ele 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 única quando há vários usuários ativos. Estou esquecendo de algo?

Joann
fonte

Respostas:

40

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

1 $wpdb->get_var.: use isso 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 usá-lo.

Exemplo:

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

OU

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

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

3 $wpdb->get_results.: as SELECTconsultas 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 pode esperar.

enam
fonte
Exemplos de detalhes maravilhosos ..
pixelngrain 27/01
Certo! por que não ..
pixelngrain 28/01
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;
}

Usar:

<?php
echo count_results();
Bryan Contreras
fonte
4
Seria ótimo se você também pudesse explicar o que esse código faz além de publicá-lo.
bravokeyl
Isso conta as linhas em uma tabela, não é uma resposta para a pergunta do OP.
alexg 15/01