Pourquoi c'est 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 renvoie toujours la même ligne lorsqu'il y a plusieurs utilisateurs actifs. Est-ce que je manque quelque chose?
En effet, utilisez get_row()
uniquement lorsque vous espérez obtenir un résultat, sinon vous pouvez utiliser get_results()
Il existe trois manières d'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;
?>
OR
<?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 SELECT
standard 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 attendre.
$wpdb->get_row('query', output_type, row_offset);
row_offset (integer) La ligne souhaitée (0 étant la première). La valeur par défaut est 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();