$ wpdb-> get_row () solo devuelve una sola fila?

21

Por que es Intenté la misma consulta en la consola y me devolvió varias filas. Aquí está la consulta:

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

Sigue devolviendo la misma fila cuando hay varios usuarios activos. ¿Me estoy perdiendo de algo?

Joann
fuente

Respuestas:

40

Hay tres formas de extraer datos de la base de datos.

1 $wpdb->get_var.: use esto para obtener un valor único de la tabla de la base de datos. Me gusta si desea contar el número total de comentarios. Puedes hacerlo de la siguiente manera:

<?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 una fila completa de la tabla, puede usar esto.

Ejemplo:

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

O

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

Al usar el ARRAY_Aparámetro en get_row, sus datos de publicación se devuelven como una matriz asociativa. Alternativamente, puede usar el ARRAY_Nparámetro para devolver sus datos de publicación en una matriz indexada numéricamente.

3 $wpdb->get_results.: Las SELECTconsultas estándar deben usar la función get_results para recuperar múltiples filas de datos de la base de datos.

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

y necesitas el último, como puedes esperar.

enam
fuente
Maravillosos ejemplos detallados ..
pixelngrain
¡Seguro! por qué no ..
pixelngrain
0

mi solución es 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;
}

Utilizar:

<?php
echo count_results();
Bryan Contreras
fuente
44
Sería genial si también puedes explicar qué hace este código además de publicarlo.
bravokeyl
Esto cuenta las filas en una tabla, no es una respuesta a la pregunta del OP.
alexg