2014-04-10 71 views
0

我有一個PHP類文件類似商店的MySQL結果數組: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); 

至今工作正常,但後來我試着像再次讀取從$結果數據:

<?php while($row = $result->fetch_assoc()): ?> 
    <tr> 
    <?php foreach ($row as $cell): ?> 
     <td><?php echo $cell; ?></td> 
    <?php endforeach; ?> 
    </tr> 
<?php endwhile; ?> 

那麼FETCH_ASSOC()部分不工作,因爲我路過v $結果Alue into構造函數, 不知道爲什麼會發生這種情況,任何建議表示讚賞!

+3

'foreach($ obj-> result_array as $ row)' – Daan

+1

爲什麼要這樣呢?只需迭代$ results_array – Steve

+1

想一想爲什麼'while($ row = $ result-> fetch_assoc())'永遠*停止*首先。 – deceze

回答

1

在構造函數中完成$result->fetch_assoc()之後,結果集中的指針現在處於末尾,因此任何進一步調用都將返回NULL。相反,你應該重複你的result_array

<?php foreach($obj->result_array as $row): ?> 
.... 
<?php endforeach; ?> 

此外,$result沒有被按值傳遞的,它是對同一對象的引用而不是克隆。

+0

感謝所有的答覆,我只是混淆文件說,PHP傳遞參數的值作爲默認值,謝謝你的答案。 – squarer