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

19

¿Por qué 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);

Continúa devolviendo la misma fila única cuando hay varios usuarios activos. ¿Me estoy perdiendo algo?

    
pregunta Joann 08.04.2011 - 05:42

4 respuestas

32

De hecho, use get_row() solo cuando espera obtener un resultado, de lo contrario puede usar get_results()

    
respondido por el Javier Villanueva 08.04.2011 - 05:52
37

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. Al igual que si quieres 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 de la tabla completa, 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 parámetro ARRAY_A en get_row, sus datos de publicación se devuelven como una matriz asociativa. Alternativamente, puede usar el parámetro ARRAY_N para devolver los datos de su publicación en una matriz indexada numéricamente.

3. $wpdb->get_results : las consultas estándar SELECT 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 necesita el último, como puede esperar.

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

row_offset (entero) La fila deseada (siendo 0 la primera). El valor predeterminado es 0.

va enlace

    
respondido por el test 01.09.2011 - 17:57
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;
}

Uso:

<?php
echo count_results();
    
respondido por el Bryan Contreras 16.11.2016 - 10:05

Lea otras preguntas en las etiquetas