PHP пока цикл не заканчивается - PullRequest
0 голосов
/ 08 марта 2011

Почему мой цикл 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();
    }

}

1 Ответ

2 голосов
/ 08 марта 2011

Потому что вы всегда запрашиваете.Каждый раз, когда вы вызываете #sqlGetRows, вы выполняете запрос снова, и поэтому вы всегда получаете первую строку из запроса при каждом его вызове.

Что вы можете сделать, например:

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

public function sqlGetRow() {
    $this->lastQuery->fetch_object();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...