$ wpdb-get_row () ne renvoie qu'une seule ligne?

19

Pourquoi est-ce? J'ai essayé la même requête dans la console et il a renvoyé plusieurs lignes. Voici la requête:

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

Il ne cesse de renvoyer la même ligne lorsqu'il y a plusieurs utilisateurs actifs. Est-ce que je manque quelque chose?

    
posée Joann 08.04.2011 - 05:42
la source

4 réponses

32

En effet, utilisez get_row() uniquement lorsque vous espérez obtenir un résultat. Sinon, vous pouvez utiliser get_results()

.     
réponse donnée Javier Villanueva 08.04.2011 - 05:52
la source
37

Il existe trois méthodes pour extraire des données de la base de données.

1. $wpdb->get_var : utilisez ceci pour obtenir une valeur unique à partir de la table de base de données. Par exemple, si vous voulez compter le nombre total de commentaires. Vous pouvez le faire de la manière suivante:

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

2. $wpdb->get_row : vous pouvez utiliser ceci pour récupérer une ligne entière de la table.

Exemple:

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

En utilisant le paramètre ARRAY_A dans get_row, vos données de publication sont renvoyées sous forme de tableau associatif. Vous pouvez également utiliser le paramètre ARRAY_N pour renvoyer vos données de publication dans un tableau indexé numériquement.

3. $wpdb->get_results : les requêtes standard SELECT doivent utiliser la fonction get_results pour extraire plusieurs lignes de données de la base de données.

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

et vous avez besoin du dernier, comme vous pouvez vous en attendre.

    
réponse donnée enam 08.04.2011 - 09:00
la source
1
$wpdb->get_row('query', output_type, row_offset);

row_offset (entier) La ligne souhaitée (0 étant la première). La valeur par défaut est 0.

va enlace

    
réponse donnée test 01.09.2011 - 17:57
la source
0

ma solution est 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;
}

Utiliser:

<?php
echo count_results();
    
réponse donnée Bryan Contreras 16.11.2016 - 10:05
la source

Lire d'autres questions sur les étiquettes