我一生都在MySQL中编程,现在我正在尝试使用mysqli更新我的知识,但是我遇到了一些麻烦。
我有一个名为news_Default()的小函数,如下所示:
<?php
Class Test extends DB{
public function news_Default(){
$query = $this->db->query('SELECT * FROM news');
if($query->num_rows == 0)
return false;
else
return $query->fetch_object();
}
}
?>
我用这种方式:
<?php
while($new = $panel->news_Default()){
print_r($new);
}
?>
在MySQL中,当我返回对象时,我可以将它与'while'或'foreach'循环一起使用而没有问题,但真正的问题在于mysqli。
当我使用'while'(第二个代码块)时,它循环6,000次(我使用$ counter ++来测试它),当我使用foreach时,它正好循环7次。在我的名为“新闻”的表中,我只有两个记录。那么,如何在没有这个问题的情况下返回对象并在外面使用呢?因为当我在类中使用它时,如$ new = $ query-&gt; fetch_object()工作完美。
答案 0 :(得分:0)
每次拨打news_Default
时都在进行sql查询。
检查修复它。
Class Test extends DB{
private $_cached_news = null; // let's store our query result
public function news_Default(){
if ($this->_cached_news === null){ // not stored?
$this->_cached_news = $this->db->query('SELECT * FROM news');} // let's query
$return = $query->fetch_object(); // get next object
if (!$return) // there is no objects anymore?
$this->_cached_news = null; // let's clear our result
return $return;
}
}