我遇到了一些问题,当我尝试使用lastactivity时间(-1分钟)来获取用户时,我根本没有任何结果。
这是我的代码:
if (isset($_POST['message'])) {
if (!empty($_POST['msg'])) {
$chatArray = array();
$s = $_database->query("INSERT INTO chat(`username`, `text`, `date`) VALUES('".$_database->real_escape_string($_POST['username'])."', '".$_database->real_escape_string($_POST['msg'])."', '".TIME()."')");
$newID = $_database->insert_id;
$_database->query("UPDATE chatusers SET lastactivity=TIME() WHERE username='".$_POST['username']."'");
$timestamp = (isset($_COOKIE['chatTimestamp'])) ? $_COOKIE['chatTimestamp'] : TIME();
$q = $_database->query("SELECT * FROM (SELECT * FROM chat WHERE `date` > ".$timestamp." ORDER BY date DESC LIMIT 0, 24) AS a ORDER BY DATE ASC");
if ($q->num_rows == 0) { echo '0'; }
else {
while ($rad = $q->fetch_array()) {
// $chatArray["message"][] = array("msgID" => $rad['msgID'], "message" => $rad['text'], "timestamp" => $rad['date'], "date" => date('H:i', $rad['date']), "username" => $rad['username']);
}
$query = $_database->query("SELECT * FROM chatusers WHERE `lastactivity` > (NOW() - INTERVAL 1 minute)");
var_dump($query);
while ($row = $query->fetch_array()) {
$chatArray["users"][] = array("username" => $row['name'], "lastactivity" => $row['lastactivity']);
}
print_r($chatArray);
}
}
}
如您所见,如果我将选择行更改为"SELECT * FROM chatusers WHERE lastactivity < (NOW() - 1 minute)"
获取数据库中的所有用户,则我会在尝试获取结果之前更新lastactivity,并且仍然会得到num_rows 0 。
我在这里想念什么?
PHP time()
,MySQLTIME()
和MySQLNOW()
不同。另外,系统时间和MySQL服务器时间可以在不同的时区。
PHP的time()
返回时间戳(整数)。
MySQL的TIME()
返回时间,如中所示12:34:31
。
MySQL会NOW()
传回日期和时间字串,如所示2015-11-19 12:34:31
。
使固定:
datetime
列,使用SQLNOW()
在所有三个声明(INSERT
,UPDATE
,和SELECT
)。timestamp
列,则TIME()
在所有三个列中都使用SQL 。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句