我试图在用户尝试在1小时内提交超过5条评论时重新指导用户。
datecommented
是时间戳。如果有{6}个评论在过去一小时内有loginid = '$uid'
的时间戳,我希望重定向发生。
以下是我到目前为止所做的,但它不起作用。我怎样才能让它发挥作用?
谢谢,
约翰
$queryuidcount = "select loginid from comment where (HOUR(NOW()) - HOUR(datecommented)) <= 1 AND loginid = '$uid'";
$uidresult = mysql_query($queryuidcount);
if (mysql_num_rows($uidresult) >= 6)
{
session_write_close();
header("Location:http://www.domain.com/directory/file.php");
exit;
}
答案 0 :(得分:4)
当您想要选择行数时,选择数据不是一个好主意,也不是将HOUR用于您想要做的事情。 HOUR()只是从时间戳返回小时,并不关心它发生的那一天。另外,通过您的解决方案,我可以在10:59发布5条评论,在11:00发布5条评论 这是您应该用来了解用户在过去一小时内发布的评论数量的查询:
SELECT COUNT(*) as num_comments
FROM comment
WHERE datecommented >= NOW() - INTERVAL 1 HOUR
AND loginid = $uid;
这将返回一个包含一列num_comments的结果集。然后,您可以在PHP代码中进行验证并使用标题重定向,就像您现在一样。
您可以像通常使用PHP中的任何查询一样获取行:
// I assume $query contains the query above
$result_set = mysql_query($query) or exit(mysql_error());
$num_comments = mysql_result($result_set, 0); // fetch the first row of the result set
if ($num_comments >= 5) {
// blablabla
}}