所以我有一个使用'IN'子句的动态构建查询,但实际上需要选择两个参数,似乎无法弄清楚如何做到这一点。
$selectSql= "SELECT groupid FROM groups WHERE name IN(";
foreach ($groupsArray as $group => $row){
$selectSql .= "'".$row['name']."'".",";
}
$selectSql = rtrim($selectSql, ',');
$selectSql .= ")";
真的,查询需要看起来像:
$selectSql= "SELECT groupid FROM groups WHERE name and type IN(;
我将如何做到这一点?
真诚感谢您的帮助!非常感谢。
答案 0 :(得分:3)
尝试implode()
foreach ($groupsArray as $group => $row ){
$name[]= "'".$row['name']."'";
$type[] = "'".$row['type']."'";
}
$selectSql= "SELECT groupid FROM groups WHERE name IN(".implode(',',$name).") and type IN(".implode(',',$type).")";
答案 1 :(得分:2)
我也支持implode()
但以稍微不同的方式完成:
$name = array();
$type = array();
foreach ($groupsArray as $group => $row ) {
$name[] = $row['name'];
$type[] = $row['type'];
}
$selectSql= "SELECT groupid FROM groups WHERE name IN ('". implode("' ,'", $name) ."') and type IN ('". implode("', '", $type). "')";
通过这种方式,您不必更改数组以将'
插入到每个项目中,因为它是由implode完成的。
我不太了解他的数组,但您甚至可以直接访问$groupsArray
项,而无需创建$name
和$type
。