我正在使用PDO构建一个登录/注册站点,只是为了在wamp上获得乐趣...
我正在构建一个用户在线页面,当用户访问任何成员页面时,它会在我的mysql表中使用unix时间戳更新一个名为online的列。
在用户在线页面上,我试图查找并显示所有有资格在线的用户,这些用户在过去十分钟内处于活动状态。到目前为止,我有这个......
$online_users = time() - 600;
$q = $dbc -> prepare("SELECT * FROM accounts WHERE online > ?");
$q -> execute(array($online_users));
$online_user = $q -> fetch(PDO::FETCH_ASSOC);
while ($q) {
echo '<p> ' . $player_details['username'] . ' is online.</p>';
}
我遇到的问题是它一遍又一遍地循环,我希望它遍历表一次,并显示mysql查询只有一次的所有用户...
我是PDO的新手并且正在自学,所以如果它真的很糟糕,请原谅!
提前致谢...
答案 0 :(得分:2)
不要先阅读一次,然后永远循环:
$online_user = $q -> fetch(PDO::FETCH_ASSOC);
while ($q) {
相反,请阅读每次循环迭代:
while ($online_user = $q -> fetch(PDO::FETCH_ASSOC)) {
此外,请不要忘记htmlspecialchars()
。
答案 1 :(得分:0)
您还可以使用以下代码:
$online_users = $q->fetchAll(PDO::FETCH_ASSOC);
foreach($online_users as $user) {
echo '<p> ' . $user['username'] . ' is online.</p>';
}