Question

Je suis en train d'afficher tous les utilisateurs en fonction d'un meta_key appelé « points » comme ceci:

$wpdb->get_col($wpdb->prepare("
SELECT user_id, meta_key = 'points', meta_value 
FROM $wpdb->usermeta 
ORDER BY meta_value DESC 
LIMIT $limit OFFSET {$paginate->offset()}"));

Les utilisateurs sont affichés correctement, mais l'ordre ne fonctionne pas, meta_value est égal à un nombre de 1 à ∞. Alors, comment dois-je l'obtenir au travail? Merci.

PS: Ceci est la sortie:

Array ( [0] => 1 [1] => 2 [2] => 4 ) 

Je crois donc est commandé par ID.

Était-ce utile?

La solution

SELECT user_id, meta_value FROM $wpdb->usermeta WHERE meta_key = 'points' ORDER BY CAST(meta_value AS SIGNED) DESC LIMIT

CAST (meta_value AS SIGNE) convertiront de LONGTEXT à INT. Il fonctionne maintenant.

Autres conseils

Si je ne suis pas tout à fait tort à propos de MySQL, vous devez ajouter les meta_key = 'points' à la clause where. Réécrivez la requête à:

  

SELECT user_id, meta_value
  À partir de $ wpdb-> usermeta
  OÙ meta_key = "points de la
  ORDER BY meta_value DESC
  LIMITE limite de $ OFFSET {$ paginate-> offset ()}

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top