[英]MySql query double WHERE clause
我目前有一个查询,用于检查是否在数组值中找到某个单词。
$imploded = implode("','",$company_array);
$query = "SELECT *
FROM $wpdb->usermeta
WHERE meta_key='company'
AND meta_value IN ('".$imploded."')";
$company_array
包含不同的值。
我想添加另一个WHERE子句,但不知道如何。
它应该检查用户角色:
SELECT*
FROM $wpdb->usermeta
WHERE meta_key = 'wp_capabilities'
AND meta_value = 'subscriber'
也许某种联接查询? 我没有任何线索。
====样本数据和预期输出====
这是我目前的查询
$query = "SELECT *
FROM $wpdb->usermeta
WHERE meta_key='company'
AND meta_value IN ('".$imploded."')";
我想添加以下查询
SELECT*
FROM $wpdb->usermeta
WHERE meta_key = 'wp_capabilities'
AND meta_value = 'subscriber'
第一个查询将加载在特定公司工作的用户列表。 问题是................
废话。 我在写这篇文章时才意识到。
问题在于管理员也在用户列表中列出。 我希望他脱离结果。
根据用户在company
字段中的值列出用户。 但是,如果该字段为空,则管理员不会在任何地方列出。
您的WHERE子句必须为
WHERE (meta_key='company' AND meta_value IN ('".$imploded."'))
OR (meta_key = 'wp_capabilities' AND meta_value = 'subscriber')
这样尝试
$query = "SELECT *
FROM $wpdb->usermeta
WHERE (meta_key='company'
AND meta_value IN ('".$imploded."')) or (meta_key = 'wp_capabilities' and meta_value = 'subscriber')";
我认为您需要以下内容。 注意两个where子句的()
OR
为OR
。
$query = "SELECT *
FROM $wpdb->usermeta
WHERE ( meta_key='company' AND meta_value IN ('".$imploded."')")
OR (meta_key = 'wp_capabilities' AND meta_value = 'subscriber');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.