mysql fetch返回只返回类中最近的行

时间:2012-10-11 22:10:55

标签: php mysql

我有一个MySql类,我通过将它们作为方法返回来获取Mysql行:

  public function fetch_assoc($result_set){
     return mysql_fetch_assoc($result_set);
  }

由于某种原因,当我尝试迭代一个方法返回我已经实例化的对象时,它只返回一个结果。

  while ($row = $a->fetch_assoc($result_set){
  ...
  }

虽然做旧时尚的方式有效,但给了我所有的行

  while($row = mysql_fetch_array($result_set)){
      $row['0'];
  } 

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是因为mysql_fetch_assoc只返回一个结果并将指针移动到下一个结果。因此,在每次迭代时,它返回移动指针,并在到达结果的末尾时返回false。

您可以通过这种方式修改方法以使其正常工作:

public function fetch_assoc($result_set){
    $resultArray = array();
    while ($row = mysql_fetch_assoc($result_set){
        $resultArray[] = $row;
    }
    return $resultArray;
}

您可以这样使用数据:

foreach ($obj->fetch_assoc($result_set) as $row){
    echo $row['stuff'];
}

请注意,在这种情况下$obj->fetch_assoc($result_set)会返回所有结果,而我只是使用foreach循环遍历它;