PHP无限循环“同时”与类

时间:2013-05-07 10:53:54

标签: php class while-loop

我没有上课就制作了我的剧本。 (框架)。现在我改变了主意。我想用课程编写脚本。我喜欢。但我有一个问题..无限循环而。没有上课之前我没有考虑过这个问题..

虽然规则;

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循环时,我在页面上进行无限循环。 我该如何解决这个问题?

3 个答案:

答案 0 :(得分:4)

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

尝试分离查询和循环:

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

答案 1 :(得分:1)

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

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

$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会循环显示结果。

答案 2 :(得分: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和record记录为$ db的实例变量。