多个参数进入sql select'in'语句

时间:2015-02-03 09:32:59

标签: php mysql sql

所以我有一个使用'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(;

我将如何做到这一点?

真诚感谢您的帮助!非常感谢。

2 个答案:

答案 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