0

MySqlクラスがあり、メソッドとして返すことでMysql行をフェッチします。

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

何らかの理由で、インスタンス化したオブジェクトを介してメソッドreturnを反復処理しようとすると、1つの結果しか返されません。

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

昔ながらのやり方をしている間はうまくいき、すべての行を私に与えます

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

何か案は?

4

1 に答える 1

1

これは、mysql_fetch_assoc が 1 つの結果のみを返し、ポインターを次の結果に移動するためです。したがって、反復ごとに戻り値がポインタを移動し、結果の最後に到達すると 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 ループを使用してループ処理を行っているだけです。

于 2012-10-11T22:16:49.120 に答える