【发布时间】:2023-03-26 20:05:02
【问题描述】:
我在管理面板中为新的 cmets 编写了概述。我的代码
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 中止条件,则创建一个无限循环。但我想展示所有新的 cmets,而不仅仅是 ++$o
有什么想法吗?
【问题讨论】:
-
如果将 false 替换为 NULL(或 !== 替换为 !=)会发生什么?
-
此外,您的代码看起来容易受到 SQL 和 XSS 注入的攻击。这可能是您想要解决的问题。
标签: php mysql while-loop infinite-loop