带有数组的PHP / MySql搜索数组

时间:2015-03-24 11:24:28

标签: php mysql arrays wordpress

我正在建立一个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

2 个答案:

答案 0 :(得分:2)

您是否考虑过在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”内容周围添加括号)

答案 1 :(得分:0)

搜索IN子句的mysql

SELECT * FROM $wpdb->usermeta WHERE meta_key='company' AND meta_value IN implode(',',$brand_array)