我正在建立一个WordPress网站。
使用MySql查询,我从数据库中加载所有具有特定品牌的公司:
$results = $wpdb->get_results("SELECT * FROM $wpdb->postmeta WHERE meta_key = 'brand'")`
brand
是一个数组,所以我在数组中搜索特定值:
$brand = $_GET['brand'];
$brandNeedle = $brand;
if(in_array($brandNeedle, $brand[0]))
现在,我的客户要求列出所有连接到所选公司的用户。
所以我需要创建一个新的查询。幸运的是,所有用户都在他们的专栏中添加了一个字段,告诉我他们在哪里工作。
所以我想:如果我创建一个数组,其中包含从公司列表中查询到的所有公司名称,该怎么办。
有了这个数组,我可以选择所有在列中有公司名称的用户
所以我认为查询应该是这样的:
SELECT * FROM $wpdb->usermeta WHERE meta_key='company' AND meta_value ='THE ARRAY'
但这并不明显,因为它不能在数组中使用数组进行搜索。
我好像想不通。有什么想法吗?
--编辑--
好吧,所以我做了内爆函数,但我做错了:
$brand_array = array();
for($i=0; $i <count($results); $i++){
$result = $results[$i];
if ($i % 2 == 0){
$oddeven = 'even';
}else{
$oddeven = 'odd';
}
$post_id = $result->post_id;
$company_name = get_post_meta($post_id, 'company_name', true);
$brand_array[] = $company_name;
}
print_r($brand_array);
$imploded = implode(',',$brand_array);
$query = "SELECT * FROM $wpdb->usermeta WHERE meta_key='company' AND meta_value IN $imploded";
$persons = $wpdb->get_results($query);
这给了我所需要的结果(新阵列中的两家公司)并给我以下错误:
WordPress database error: [You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near
'brand1,brand2' at line 1]
SELECT * FROM wp_usermeta WHERE meta_key='company' AND meta_value IN
brand1,brand2
你想过在MySQL上使用"IN"子句吗?https://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_in
你可能会有这样的东西:
$query = "SELECT * FROM ".$wpdb->usermeta." WHERE meta_key='company' AND meta_value IN ('".implode("', ', $brand)."')";
(编辑:忘记在"in"内容周围添加括号)
在mysql中搜索IN子句
SELECT * FROM $wpdb->usermeta WHERE meta_key='company' AND meta_value IN implode(',',$brand_array)