[英]PHP Query Doesn't Work
我有以下代码,它应该从2个表中获得一些结果,我目前正在尝试加载他们的最后一个(时间),用户ID,用户头像。
我正在使用以下代码在页面上显示:
<?php
$t = 1800;
$sql = 'SELECT mh_users.id, mh_users.lastactive, mh_users.avatar, mh_users.gang FROM `mh_users` ';
$sql .= 'LEFT JOIN `mh_users_stats` ON mh_users.id = mh_users_stats.id WHERE mh_users.lastactive > `'.$t.'` ORDER BY `mh_users.lastactive` DESC';
$res = $db->query($sql) or exit($db->error);
while($row = $res->fetch_object()) {
$online_user = new User($row->id);
echo '<tr>'
. '<td><img src="'.$online_user->avatar.'" width="40" height="40" alt="[avatar]" /></td>'
. '<td>'.$online_user->formattedname.'</td>'
. '<td>'.$gang_name.'</td>'
. '</tr>'
;
}
?>
看来用这个查询,页面是空白的,$ db-> error不返回任何内容,页面只是白色。
但是,如果我在此查询中执行此操作:
$sql = 'SELECT mh_users.id, mh_users.lastactive, mh_users.avatar, mh_users.gang FROM `mh_users` ';
$sql .= 'LEFT JOIN `mh_users_stats` ON mh_users.id = mh_users_stats.id';
它确实有效,但是,它在最后一个活动时间没有ORDER,如何根据上一个活动时间进行此查询以列出结果(因此访问最新页面的用户将显示在顶部)
抱歉没有问题,但我现在无法解决这个问题:(
非常感谢!
代替
ORDER BY `mh_users.lastactive`
你应该像这样单独使用反引号别名和字段名称
ORDER BY `mh_users`.`lastactive`
或者根本不使用反引号,因为您已经不在查询中的任何地方使用反引号。
正如我们在评论中发现的那样,您忘记在更新语句中添加WHERE条件。 像这样的东西$sql = 'UPDATE mh_users SET lastactive = '.time().' WHERE id='.$_SESSION['uid'];
$sql = 'UPDATE mh_users SET lastactive = '.time().' WHERE id='.$_SESSION['uid'];
应该管用。
ORDER BY `mh_users`.`lastactive`
不
ORDER BY `mh_users.lastactive`
这应该适合你(我只是删除了变量周围的后面的滴答声):
$sql = 'SELECT mh_users.id, mh_users.lastactive, mh_users.avatar, mh_users.gang FROM `mh_users` ';
$sql .= 'LEFT JOIN `mh_users_stats` ON mh_users.id = mh_users_stats.id WHERE mh_users.lastactive > '.$t.' ORDER BY `mh_users.lastactive` DESC';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.