我有一个多选功能,允许用户使用服务标记公司。在我的数据库中,我有一个表只有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?
由于
答案 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();