2011-03-07 192 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(); 
}