更新:我不知道为什么时间差小于180秒仍然在用户评级栏中增加10
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了更新:我不知道为什么时间差小于180秒仍然在用户评级栏中增加10相关的知识,希望对你有一定的参考价值。
我有一个用户注册和登录系统,最初设置注册的第一个日期和时间。每次用户登录时,我都会有一个查询,检查现在注册的日期时间和当前时间之间的时差。如果时间差大于或等于180秒,则将10添加到该用户的评级列,并将当前登录时间重置为新的日期时间/注册日期时间,然后将用户重定向到索引页面。
如果时间差小于180秒,则只需将用户重定向到索引页面而不向评级表添加数字。
我已经尝试了许多代码研究如何使这个工作我所看到的是cron工作。我不想用cron工作做这件事。
必须有办法,请帮忙。你们需要救我这就是我所做的
<?php
// This is part of the code
//$_SESSION['id'] = $id;
$_SESSION['email'] = $email;
date_default_timezone_set("Africa/Lagos");
// getting the time query difference
$sql1 = "SELECT TIMESTAMPDIFF(SECOND, date, NOW()) AS tdif FROM
users WHERE email='$email'";
$result = $con->prepare($sql1);
$result->execute();
$result->bind_result($tdif);
$result->fetch();
//var_dump($tdif);
if ($tdif >= 180) {
//following code suppose run once every 180seconds
//update user's page rank
$sql2 = "UPDATE users SET rating = rating + 10 WHERE email='$email'";
$result2 = $con->query($sql2) or die("Unable to select and run query");
//update last execution time
$sql3 = "UPDATE users SET date = NOW() WHERE email='$email'";
$result3 = $con->query($sql3) or die("Unable to select and run query");
}
//login me in
redirectToIndexPage();
// This Outputs Unable to select and run query
?>
此代码只是将评分加10,而不管时间差异如何。换句话说,每次用户登录时它会不断添加10,这假设仅在上次登录或注册日期时间3分钟(180秒)后发生
请帮助我知道我弄错了。
答案
如上面的评论中所述,您无法按预期从查询中返回单个值。下面修改后的代码将执行相同的查询,并将您的$tdif
变量设置为可在if
语句中使用的单个值。
$sql1 = "SELECT TIMESTAMPDIFF(SECOND, date, NOW()) AS tdif FROM users WHERE email=?";
$result = $con->prepare($sql1);
$resylt->bind_param("s",$email);
$result->execute();
$result->bind_result($tdif);
$result->fetch();
if ($tdif >= 180) {
//update user's page rank
$sql2 = "UPDATE users SET rating = rating + 10 WHERE email='$email'";
$result2 = $con->query($sql2) or die("Unable to select and run query");
//update last execution time
$sql3 = "UPDATE users SET date = NOW() WHERE email='$email'";
$result3 = $con->query($sql3) or die("Unable to select and run query");
}
redirectToIndexPage();
以上是关于更新:我不知道为什么时间差小于180秒仍然在用户评级栏中增加10的主要内容,如果未能解决你的问题,请参考以下文章