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.

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à wordpress.stackexchange
scroll top