2011-03-07 5 views
0

어떻게 while 루프가 끝나지 않습니까? 제대로 작동하지 않을 수도 있습니다. 수업 시간에 문제가있을 수 있습니다.PHP 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(); 
} 
관련 문제