【问题标题】:PHP while loop never endsPHP while 循环永远不会结束
【发布时间】:2011-03-07 23:30:51
【问题描述】:

为什么我的 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();
    }

}

【问题讨论】:

    标签: php loops mysqli while-loop


    【解决方案1】:

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

    你可以做的是,例如:

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

    【讨论】:

      猜你喜欢
      • 2011-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      相关资源
      最近更新 更多