当我运行下面的查询时,我会继续获取值两次。该数组包含[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
值只有一次。那么为什么重复?
答案 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。