MYSQL将数组与db表进行比较

时间:2014-03-13 22:56:06

标签: php mysql arrays

我有一个多选功能,允许用户使用服务标记公司。在我的数据库中,我有一个表只有id和这些服务的名称。我要做的是创建一个语句,搜索标签是否已经存在,如果它不存在,创建它。有人能帮助我设置这个的逻辑吗?

我只是不确定如何使用数组搜索表列。

由于

$company_type = implode(',', $company_type);
 $lookup_tags = "SELECT * FROM table WHERE company_type_id = ?";
  $q_lookup_tags = $conn->prepare($lookup_tags);
   $q_lookup_tags -> execute(array($company_type));

如何执行选择并将结果排序为现有和非现有ID?

由于

2 个答案:

答案 0 :(得分:1)

mysql in运营商是你的朋友:

$lookup_tags = "SELECT * FROM table WHERE company_type_id in ($company_type)";

但如果您使用的是pdo预处理语句,则需要手动过滤

修改

$placeHolders=implode(',',array_fill(0,count($company_type),'?'));
$lookup_tags = "SELECT * FROM table WHERE company_type_id in ($placeHolders)";
$qry= $conn->prepare($lookup_tags);
$qry->execute(array_values($company_type));

答案 1 :(得分:0)

 $query = "";
 $i = 0;
 foreach($company_type as $key=>$type){
    $query.="SELECT $type as type, count(*) as total,* FROM table WHERE company_type_id = ".intval($type);
    if($i < count($company_type)){
        $query.=" UNION ";
    } 
    $i++;
}

$q_lookup_tags = $conn->prepare($query);
$q_lookup_tags -> execute();