【发布时间】:2015-09-30 08:40:43
【问题描述】:
我一直在使用以下 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',但没有运气。我该怎么做?
【问题讨论】:
-
另外:由于我从单个值切换到数组,并非所有用户都更新了他们的配置文件 - 因此该键的某些值仍存储为单个值。只有最近更新了他们的个人资料的用户才会有一个数组。上述查询仅适用于具有“单值”的用户。我需要查询适用于这两种情况。我以为“LIKE”会那样做……
标签: php mysql arrays wordpress