fonction retourne plus () propriété non définie
-
16-10-2019 - |
Question
J'utilise MySQL GREATEST () fonction de comparer les deux champs de la table et de l'affichage dans une boucle, soit une à la valeur entière la plus élevée. Les 2 champs se composent des scores de vote pour les postes:. HAUT ou BAS
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
}
Alors dans ma boucle que j'appelle la fonction mais obtenir Notice: Undefined property: stdClass::$up
pour
echo $results->up;
et le même avis pour down
. Je ne sais pas ce que je fais mal ici.
La solution
Je pense que vous voulez utiliser get_var()
, pas get_row()
- regardant la de la documentation, la GREATEST
de MySQL retourne une seule valeur.
$results
sera alors seulement la valeur de la plus grande (que ce soit up
ou down
).
Si vous voulez le plus grand up
et le plus grand down
, l'utilisation;
$wpdb->get_row("SELECT GREATEST(up) AS 'up', GREATEST(down) AS 'down' ...")
Autres conseils
D'accord avec TheDeadMedic ... Si vous utilisez GREATEST (), s'il vous plaît vous faire une faveur en sachant ce que vous faites. Il retourne un bigint dans l'alimentation ints, et votre requête ne donne pas la colonne résultante un nom. Donc $ wpdb se plaindra évidemment lorsque vous essayez d'accéder à une colonne qui ne sont pas disponibles. : -)
Je crois que vous êtes à la recherche ceci:
SELECT up - down as total, up, down FROM $table WHERE voted_post_id = $post_id