我一直在使用以下SQL查询来输出WordPress用户配置文件中的值。
$divisions = $wpdb->get_col("
SELECT Distinct(c.meta_value)
FROM $wpdb->usermeta AS r
INNER JOIN $wpdb->usermeta AS y
ON r.user_id = y.user_id
INNER JOIN $wpdb->usermeta AS g
ON r.user_id = g.user_id
INNER JOIN $wpdb->usermeta AS re
ON r.user_id = re.user_id
INNER JOIN $wpdb->usermeta AS c
ON r.user_id = c.user_id
WHERE r.meta_value LIKE '%subscriber%'
AND y.meta_key = 'CERTIFIED_DISPLAY'
AND y.meta_value NOT LIKE 'no'
AND g.meta_key = 'CERTIFIED_CATEGORY'
AND g.meta_value = '$category'
AND re.meta_key = 'dbem_region'
AND re.meta_value = '$region'
AND c.meta_key = 'dbem_school_division'
ORDER BY c.meta_value ASC
");
在我必须将其中一个元键('CERTIFIED_CATEGORY')更改为数组之前,它一直运行良好。该特定字段曾经是具有单个值的选择框,然后我将其更改为复选框列表,该列表是值数组。这是我现在需要修复的查询的一部分:
AND g.meta_key = 'CERTIFIED_CATEGORY'
AND g.meta_value = '$category'
$category
是数组中的值之一。我以为我可以将'='更改为'LIKE',但它不起作用:
AND g.meta_key = 'CERTIFIED_CATEGORY'
AND g.meta_value LIKE '$category'
我也试过'IN',但没有运气。我怎么能这样做?
答案 0 :(得分:0)
答案 1 :(得分:0)
似乎我需要做的就是改变这一行:
AND g.meta_value = '$category'
到此:
AND g.meta_value LIKE '%$category%'
我已经尝试过使用LIKE,但我没有使用变量周围的%符号。显然%是必要的,因为它现在有效。希望我知道更多解释为什么。
谢谢!