2011-03-07 147 views
0

我的while循环怎么没结束?不能让它工作,也许我的课上有什么问题?PHP while while循环永不结束

function getCategory() { 

    require_once('includes/database/config.php'); 

    $database = new Database(); 
    $database ->sqlQuery("SELECT * FROM news_category");  
    $rows = $database ->sqlNumRows(); 

    if($rows > 0) { 
     while($row = $database->sqlGetRows()) { 
      echo "<li><input type='hidden' value='" . $row->id . "' id='hiddenForm' /><span></span> <img src='gfx/close.png' alt='' title='Slett Kategorien' /></li>"; 
     } 
    } else { 
     echo "<hr>"; 
     echo "<br />"; 
     echo "<span>Det er ingen kategorier her enda!</span>"; 
    } 

} 

class Database { 

    private $mysqli; 
    private $query; 
    private $string; 

    public function __construct() { 
     $this->mysqli = new mysqli('localhost', 'root', '', 'hltv'); 
    } 

    public function sqlQuery($sql) { 
     $this->mysqli->query($sql); 
     $this->query = $sql; 
    } 

    public function sqlNumRows() { 
     $q = $this->mysqli->query($this->query); 
     return $q->num_rows; 
    } 

    public function sqlGetRows() { 
     $q = $this->mysqli->query($this->query); 
     return $q->fetch_object(); 
    } 

} 

回答

2

因为你总是在重新查询。每次调用#sqlGetRows时,都会再次执行查询,因此无论何时调用该查询,都会从查询中获取第一行。

你可以做的是,例如:

public function sqlQuery($sql) { 
    $this->lastQuery = $this->mysqli->query($sql); 
} 

public function sqlGetRow() { 
    $this->lastQuery->fetch_object(); 
}