سؤال

أحاول عرض جميع المستخدمين بناءً على meta_key يسمى "نقاط" مثل هذا:

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

يتم عرض المستخدمين بشكل صحيح ، لكن الطلب لا يعمل ، فإن meta_value يساوي رقم 1 إلى ∞. لذا ، كيف يمكنني تشغيله؟ شكرًا.

ملاحظة: هذا هو الإخراج:

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

لذلك أعتقد أنه أمر بالمعرف.

هل كانت مفيدة؟

المحلول

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

يلقي (meta_value كما وقع) سوف يسفي من longtext إلى int. انه يعمل الان.

نصائح أخرى

إذا لم أكن مخطئًا تمامًا في MySQL ، فيجب عليك إضافة ملف meta_key = 'النقاط' إلى جملة أين. أعد كتابة الاستعلام إلى:

حدد user_id ، meta_value
من $ wpdb-> usermeta
حيث meta_key = 'النقاط'
طلب بواسطة meta_value desc
إزاحة الحد الأقصى $ {$ paginate-> Offset ()}

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top