我有一个php类文件,比如将mysql结果存储到数组:
<?php
class myclass{
public $result_array;
function __construct($result){
while($row = $result->fetch_assoc()){
$this->result_array[] = $row;
}
}
}
?>
并在php页面中:
$obj = new myclass($result);
到目前为止工作正常,但后来我尝试再次从$ result中获取数据,如:
<?php while($row = $result->fetch_assoc()): ?>
<tr>
<?php foreach ($row as $cell): ?>
<td><?php echo $cell; ?></td>
<?php endforeach; ?>
</tr>
<?php endwhile; ?>
然后fetch_assoc()部分不起作用,因为我将$ result by value传递给构造函数, 无法弄清楚为什么会发生这种情况,任何建议都表示赞赏!
答案 0 :(得分:1)
在构造函数中完成$result->fetch_assoc()
之后,结果集中的指针现在结束,因此任何进一步的调用都将返回NULL
。相反,您应该迭代result_array
:
<?php foreach($obj->result_array as $row): ?>
....
<?php endforeach; ?>
此外,$result
未按值传递,它是对同一对象的引用,而不是克隆。