0

我在没有课的情况下制作了我的脚本。(框架)。现在我改变了主意,我想用课程制作我的脚本。我喜欢。但是我有一个问题..无限循环。我没有上课之前没有解决这个问题..

虽然规则;

while ($fetch=$db->fetchObject($db->q("SELECT * FROM auction_house.items ORDER BY id DESC LIMIT ".$min_stuff.",".$max_stuff."")))
{
    // etc
}

班级;

public function fetchObject($queryRes)
{
    $this->queryRes = $queryRes;
    $this->record = mysql_fetch_object($this->queryRes);
    return $this->record;
}

当我尝试 while 循环时,我在页面上进行了无限循环。我怎么解决这个问题?

4

3 回答 3

4

您在每次迭代中执行查询。它总是返回一个新资源。

尝试分离查询和循环:

$res = $db->q("SELECT * FROM auction_house.items ORDER BY id DESC LIMIT ".$min_stuff.",".$max_stuff."");
while ($fetch=$db->fetchObject($res))
{
    // etc
}
于 2013-05-07T10:57:27.283 回答
1

您的代码在每个while循环上执行,因此如果您将$db->q嵌套保留在那里,它将在每次循环时执行查询,并为每次 while 迭代返回查询结果的第一行。

尝试分离您的代码,如下所示:

$result = $db->q("SELECT * FROM auction_house.items ORDER BY id DESC LIMIT ".$min_stuff.",".$max_stuff."");
while ($fetch=$db->fetchObject($result)){
    // etc
}

这样,$db->q()只会按预期执行一次,而while将循环遍历其结果。

于 2013-05-07T10:58:50.577 回答
0

您将在每次迭代时开始一个新查询。

您需要存储您的 queryRes:

$queryRes = $db->q("SELECT * FROM auction_house.items ORDER BY id DESC LIMIT ".$min_stuff.",".$max_stuff."");

while ($fetch=$db->fetchObject($queryRes))
{
    // etc
}

另一方面,我不确定您是否应该存储 queryRes 并记录为 $db 的实例变量。

于 2013-05-07T11:02:35.163 回答