问题:运行查询时,数组中的值重复

时间:2011-05-19 09:11:01

标签: php mysql

当我运行下面的查询时,我会继续获取值两次。该数组包含[1,2,1,2],它应仅包含值[1,2]。有人可以向我解释为什么我会得到重复的值吗?

$grusnro = 0;

while (!empty($grus[$grusnro ]))
{
  $catid="SELECT cat_id FROM  catgroup WHERE group_id='$grus[$grusnro]'";
  $catidsult=mysql_query($catid);

  while($grunamerow = mysql_fetch_array($catidsult, MYSQL_ASSOC))
  { 
    $catgroup[]=$grunamerow['cat_id'];  
  }

  $grusnro = $grusnro +1;
}

当我从命令行运行时,我得到结果[1,2]。我已经检查过$ grus数组中的group_id值只有一次。那么为什么重复?

1 个答案:

答案 0 :(得分:2)

我建议使用这个代码的简化版本,它的性能要好得多:

$catgroup = array(); //Making sure $catgroup is an empty array
if(!empty($grus)) {
  //Fetch all groups in the same query
  $grusids = implode("','", $grus);
  $catid = 'SELECT DISTINCT cat_id FROM catgroup WHERE group_id IN(\''.$grusids.'\')';
  $catidsult = mysql_query($catid);
  while($grunamerow = mysql_fetch_array($catidsult, MYSQL_ASSOC))
  {   
    $catgroup[] = $grunamerow['cat_id'];
  }
}

请注意,在SQL中使用DISTINCT关键字只能获取唯一的cat_id。