1

配列を生成する関数があるので、次のようにさらに実行できます。

while ($this->stmt->fetch()) // $row is generated here
{
   .....
}

このwhileループに書き込むと、正常にprint_r($row)動作し、さまざまな配列が表示されます

しかし..そこに書き込むと$return[] = $row$return配列内にすべての重複エントリがあります

そんなことがあるものか?私はとても疲れていて、それを理解することができません。

アップデート

public function bind_array($stmt, &$row)
{
      $md = $stmt->result_metadata();

      $params = array();
      while($field = $md->fetch_field()) {
         $params[] = &$row[$field->name];   
      }

   call_user_func_array(array($stmt, 'bind_result'), $params);
}

public function results($method = 'assoc', $close_stmt = false)
{
   $this->bind_array($this->stmt, $row);

   while ($this->stmt->fetch())
   {
      $ret[] = $row; // if write here print_r($row) instead everything is good
   }
   print_r($ret); // all are duplicate, 'id' are same, etc..
}
4

2 に答える 2

0

方法はわかりませんが、次のように解決しました。

while ($this->stmt->fetch())
{
    foreach ($row as $k => $v)
    {
        $r[$k] = $v;
    }
    $ret[] = $r;
}

print_r($ret); // It gave different results, finally!
于 2013-01-24T22:35:08.787 に答える
0

単なるアイデアであり、私はもっと単純だと思います(配列を配列で埋める)。

// $row = array("foo" => "the foo");
foreach ($row as $k => $v) $ret[] = array($k => $v);

与える;

Array
(
    [0] => Array
        (
            [foo] => the foo
        )

)
于 2013-01-24T23:47:48.440 に答える