Frage

Ich versuche, alle Benutzer anzuzeigen, basierend auf einem meta_key „Punkte“ wie folgt aufgerufen:

$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()}"));

Der Anwender richtig angezeigt werden, aber die Reihenfolge nicht funktioniert, ist meta_value auf eine Zahl von 1 gleich 8. Also, wie soll ich es an der Arbeit? Danke.

PS: Dies ist die Ausgabe:

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

Also ich glaube, durch ID bestellt werden.

War es hilfreich?

Lösung

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 UNTERZEICHNET) wird von LONG auf INT verdeckte. Es funktioniert jetzt.

Andere Tipps

Wenn ich über mysql nicht völlig falsch bin, müssen Sie fügen Sie die meta_key = ‚Punkte‘ auf die where-Klausel. Schreiben Sie die Abfrage an:

  

SELECT user_id, meta_value
  AUS $ wpdb-> usermeta
  WHERE meta_key = 'Punkte'
  ORDER BY meta_value DESC
  LIMIT $ limit OFFSET {$ paginate-> Offset ()}

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top