我在管理面板中写了新评论的概述。我的代码
if($res = $db->query("select * from comments where unlocked=0"));
{
$o = 0; //abortcondition temp
echo '<div class="newcomments"><a>neuste kommentare: </a><br />';
//here is the infinite loop
while(false !== ($data = $res->fetch_assoc()) && ++$o < 10)
{
if($articles = $db->query("select title from coreless_articles where ID=".$data['article']))
{
if(false !== ($article = $articles->fetch_assoc()))
{
echo
'<div id="comment'.$data['ID'].'">'.$data['from'].' in'.
' <a href="article/'.($article['uri']).'#comments">'.$article['title'].'</a>'.
' <a href="javascript:;">anzeigen</a>'.
' <a href="javascript:;">freischalten</a>'.
' <a href="javascript:;">löschen</a>'.
' <div class="preview" >'.$data['text'].'</div>'.
'</div>';
}
}
}
}
如果我没有$ o中止条件,会创建一个无限循环。但我想展示所有新评论,而不只是++ $ o&lt; ñ。我使用mysqli来访问数据库。
任何想法?
答案 0 :(得分:2)
mysqli_result :: fetch_assoc在为空时返回NULL,而不是FALSE。 http://www.php.net/manual/en/mysqli-result.fetch-assoc.php
返回与获取的行或对应的关联数组 如果没有更多行,则为NULL。
只需将测试更改为NULL !== (etc)
。
(这很令人困惑,因为等效函数mysql_fetch_assoc() 返回FALSE。)
答案 1 :(得分:0)
为什么要测试负面情况?你为什么不直接测试积极的那个?
while($data = $res->fetch_assoc())
{
...
}
无论如何,@evan
解释为什么代码创建一个无限循环绝对正确。