PDO mysql查询问题

时间:2011-08-25 07:58:09

标签: php mysql pdo while-loop

我正在使用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的新手并且正在自学,所以如果它真的很糟糕,请原谅!

提前致谢...

2 个答案:

答案 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>';
}