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

21

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

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

Il continue de renvoyer la même ligne unique lorsqu'il y a plusieurs utilisateurs actifs. Suis-je en train de manquer quelque chose?

Joann
la source

Réponses:

41

Il existe trois façons d'extraire des données de la base de données.

1 $wpdb->get_var.: utilisez ceci pour obtenir une valeur unique de la table de base de données. Comme 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.: Pour récupérer une ligne de tableau entière, vous pouvez l'utiliser.

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 ARRAY_Aparamètre dans get_row, vos données de publication sont renvoyées sous forme de tableau associatif. Vous pouvez également utiliser le ARRAY_Nparamètre pour renvoyer vos données de publication dans un tableau indexé numériquement.

3 $wpdb->get_results.: Les SELECTrequêtes standard doivent utiliser la fonction get_results pour récupérer 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 y attendre.

émail
la source
1
Des exemples de détails merveilleux ..
pixelngrain
Sûr! pourquoi pas ..
pixelngrain
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;
}

Utilisation:

<?php
echo count_results();
Bryan Contreras
la source
4
Ce serait formidable si vous pouvez également expliquer ce que fait ce code en plus de le publier.
bravokeyl
Cela compte les lignes d'un tableau, ce n'est pas une réponse à la question du PO.
alexg