[英]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.