J'utilise la fonction mysql GREATEST () () pour comparer deux champs de table et afficher en boucle l'un ou l'autre avec la valeur entière la plus élevée. Les 2 champs sont constitués des scores de vote pour les messages: UP ou DOWN.
function vote_results($post_id) {
global $wpdb;
$table = $wpdb->prefix . "post_votes";
$results = $wpdb->get_row( "SELECT GREATEST (up, down) FROM $table WHERE voted_post_id = $post_id" );
echo $results->up; //echo if highest value
echo $results->down; //echo if highest value
}
Ensuite, dans ma boucle, j'appelle la fonction mais je récupère Notice: Undefined property: stdClass::$up
pour
echo $results->up;
et le même avis pour down
. Je ne suis pas sûr de ce que je fais mal ici.
Je pense que vous voulez utiliser get_var()
, pas get_row()
- en consultant la documentation , le nom GREATEST
de MySQL ne renvoie qu'une valeur unique.
$results
sera alors juste la valeur du plus grand (que ce soit up
ou down
name__).
Si vous voulez le plus grand up
et le plus grand down
name__, utilisez;
$wpdb->get_row("SELECT GREATEST(up) AS 'up', GREATEST(down) AS 'down' ...")
Accepter avec TheDeadMedic ... Si vous utilisez GREATEST (), veuillez vous rendre service en sachant ce que vous faites. Il retourne un bigint lorsqu'il est alimenté, et votre requête ne donne aucun nom à la colonne résultante. Donc, $ wpdb va évidemment se plaindre lorsque vous essayez d'accéder à une colonne qui n'est pas disponible. :-)
Je crois que vous cherchez ceci:
SELECT up - down as total, up, down FROM $table WHERE voted_post_id = $post_id