php - : Duplicate values in array when query is run 的问题

标签 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]。我已经检查过 group_id 值在 $grus 数组中仅出现一次。那么为什么会重复呢?

最佳答案

我建议您使用这个简化版本的代码,它的性能会更好:

$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_ids。

关于php - : Duplicate values in array when query is run 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6056290/

相关文章:

javascript - 如何在 javascript 警告框中显示 sql 错误消息?

MySQL 查询错误#1064?

PHP MySQL插入忽略插入太多数据

PHP 变量未通过 MySQL 更新查询加载

php - PDO + MySQL 总是返回字符串,但是 MsSQL 呢?

php - Mysql查询SUM字段字符串和分组依据

java - 我应该在哪里创建本地数据库,并与数据库连接-断开连接?

mysql - SQL 错误 - #1241 - 操作数应包含 1 列

php - Doctrine 2.1 - 获取实体限制

php - Stripe.js/stripe.php - 所有卡错误都有效(过期、cvc、不正确的#),卡被拒绝除外