簡體   English   中英

是否有可能在while循環之外回顯多個結果?

[英]Is it possible to echo multiple results outside of a while loop?

我有一個while循環,用於回顯多個轉換為脫機用戶的mysql結果。 為了使事情更有條理,我想執行查詢,將結果存儲在變量中,然后在頁面底部回顯它。 我需要回應某個父div中的在線和離線用戶,所以我回到第一個div標簽,然后執行兩個查詢並回顯結果,然后回顯結束標記,這似乎很混亂。 目前,如果我嘗試從while循環外部回顯結果,我只得到1個結果。 如果有人有任何想法,我將不勝感激。

 $sql = 'SELECT * FROM users
LEFT JOIN friendships
ON friendships.friend_id = users.id
WHERE friendships.user_id = ?
AND users.id NOT IN (
  SELECT active_users.id FROM active_users)';
$stmt5 = $conn->prepare($sql);
$result=$stmt5->execute(array($userid));

    while ($row = $stmt5->fetch(PDO::FETCH_ASSOC)) {
    $online=htmlspecialchars( $row['username'], ENT_NOQUOTES, 'UTF-8' );

$online = "<div class='user-online'>
    <a data-name=\"$to\">$to</a>
</div>";
$online.=etc...plus do other processes
}

    <div id=\"online\">
        ".$online."
    </div>

您需要將SQL結果存儲在數組中

$sql = 'SELECT * FROM users
LEFT JOIN friendships
ON friendships.friend_id = users.id
WHERE friendships.user_id = ?
AND users.id NOT IN (
  SELECT active_users.id FROM active_users)';
$stmt5 = $conn->prepare($sql);
$result=$stmt5->execute(array($userid));

    while ($row = $stmt5->fetch(PDO::FETCH_ASSOC)) {
    $online[]=htmlspecialchars( $row['username'], ENT_NOQUOTES, 'UTF-8' );

}

    <div id=\"online\">
        <?php foreach ($online as $aline) {
echo $aline;
} ?>
    </div>

為了清晰起見,我修剪了一些代碼,但希望它有所幫助

while循環的每次迭代都重新定義$ online變量(覆蓋它的先前值)。 您可以在循環外部定義一個變量,並在循環中追加它,或者將結果存儲在數組中,然后遍歷它以生成輸出。

你不需要while循環。 只要你有足夠的內存:

$rows = $stmt5->fetchAll(PDO::FETCH_ASSOC);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM