在mysql_fetch_array()中向后退一步

时间:2013-04-25 04:34:30

标签: php mysql

这是$result

中的值
  • id name
  • 1 a
  • 2 b
  • 2 c
  • 2 d
  • 3 e

...

我正在使用mysql_fetch_array()

创建一个循环函数
while($row = mysql_fetch_array($result)) {
    $temp_id = $row['id'];

    while($temp_id == $row['id']) {
         if($temp_id == $row['id']) {
              mysql_fetch_array($result);
         }
         $temp_id = $row['id'];
         echo $row['name'].",";

    }
    echo "<br/>";
}

这样可行,但问题是,mysql_fetch_array会在id转换过程中跳转其中一个值。

我希望这些值与这些

相同
a
b,c,d
e

我的问题是,是否有一个简单的回绕功能,只能在行中执行一次? 我搜索了mysql_data_seek(),但我认为这需要额外的控制变量,如$i来定位地址..

谢谢..任何建议和功能样本都会非常棒!

2 个答案:

答案 0 :(得分:0)

首先使用一个带mysql_fetch_array的循环来创建行数组。然后,遍历行本身。

根据您的问题的更新,您似乎希望在查询中使用GROUP_CONCAT,但您仍然可以在PHP中执行此操作:

$rows = array();
while($row = mysql_fetch_assoc($result)) {
    if (!isset($rows[$row['id']]) {
        $rows[$row['id'] = array();
    }
    $rows[$row['id']][] = $row['name'];
}
foreach ($rows as $row) {
    echo implode(',', $row) . "<br>";
}

答案 1 :(得分:0)

试试此代码

while($row = mysql_fetch_array($result)) {
    $temp[$row['id']][] = $row['name'];
}
foreach($temp as $row) {
    echo implode(',', $row) . '<br/>';
}