【发布时间】:2017-05-21 19:18:52
【问题描述】:
我正在为 wordpress 的选择查询而苦苦挣扎,但它不起作用。奇怪的是我有 2 个选择查询,1 个在当前正在运行的网站上并且有效。并且在本地测试机器上进行了几乎类似的选择查询并且无法正常工作。
这是来自现场的查询,它正在工作:
SELECT DISTINCT users.*
FROM wp_users as users
INNER JOIN wp_usermeta as mt
ON (users.ID = mt.user_id)
WHERE 1=1
AND (mt.meta_value LIKE '%Trainer%')
AND (mt.meta_key = '_upme_search_cache' AND mt.meta_value LIKE '%ACTIVE%')
AND ( (mt.meta_key = '_upme_search_cache' AND mt.meta_value NOT LIKE '%administrator%')
AND (mt.meta_key = '_upme_search_cache' AND mt.meta_value NOT LIKE '%sportentrainer%') )
ORDER BY users.user_registered asc LIMIT 9
这里是来自本地机器的查询:
SELECT DISTINCT users.*
FROM wp_users as users
INNER JOIN wp_usermeta as mt
ON (users.ID = mt.user_id)
WHERE 1=1
AND (mt.meta_value LIKE '%trainer%')
AND (mt.meta_key = 'sent_activation_status' AND mt.meta_value LIKE '%ACTIVE%')
AND ( (mt.meta_key = 'account_type' AND mt.meta_value NOT LIKE '%administrator%')
OR (mt.meta_key = 'account_type' AND mt.meta_value NOT LIKE '%sportentrainer%') )
ORDER BY users.user_registered asc LIMIT 9
第二个查询的meta_key都是单独搜索的时候找到的。您注意到 meta_keys 不同,但这不是问题。
第一个查询在 phpmyadmin 的实时版本:4.1.9 和 mysql:5.0.12(如果我是正确的)上运行,第二个查询在 phpmyadmin 的本地版本:4.6.6 和 mysql:5.6.35 上运行
有人能看出为什么第二个查询不起作用吗?
【问题讨论】:
-
不工作是否意味着查询没有返回您想要的结果?如果是这样,那么最好的办法可能是通过简化查询来进行调试。仅从一个
AND/OR条件开始,运行查询,检查您是否在该点之前获得数据,添加更多条件,再次验证结果并继续运行,直到发现断开连接。也许表格中实际上没有任何内容符合您的期望?或者如果有,那么条件可能没有准确地制定? MySQL 版本不应该对这个查询产生任何影响。 -
不工作,我的意思是它返回 0 个结果。当我只使用 1 并且它返回结果。所以奇怪的是,第一个查询返回结果,但只是修改 meta_keys 会返回 0 个结果,但是当我在 phpmyadmin 中搜索这些 meta_keys 和特定值时,它也会返回结果。所以 meta_keys 就在那里。
标签: php mysql wordpress phpmyadmin