Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP您还要多久才能再次执行此操作_Php_Sql - Fatal编程技术网

PHP您还要多久才能再次执行此操作

PHP您还要多久才能再次执行此操作,php,sql,Php,Sql,我有投票制度。 在一个人投票后,他将在12小时内无法投票 我想做的是,发出回声,告诉他什么时候可以再次投票 例如: You will be able to vote in 11 hours, and 04 minutes 我的想法: 当用户完成操作时,我将发送一个包含所有详细信息的查询,然后将“下一次投票”列设置为: CURDATE() + 12 HOURS 然后执行next_vote减去date(),然后它会给我小时/分钟的时间,直到我可以再次投票 但问题是,我不知道我该怎么做,因此我需要

我有投票制度。

在一个人投票后,他将在12小时内无法投票

我想做的是,发出回声,告诉他什么时候可以再次投票

例如:

You will be able to vote in 11 hours, and 04 minutes
我的想法:

当用户完成操作时,我将发送一个包含所有详细信息的查询,然后将“下一次投票”列设置为:

CURDATE() + 12 HOURS
然后执行next_vote减去date(),然后它会给我小时/分钟的时间,直到我可以再次投票

但问题是,我不知道我该怎么做,因此我需要一些帮助

这是一个好方法&应该有效吗?我该怎么做

编辑::

    public function getTimeLeft($ip)
    {
        $this->get = $this->pdo->prepare("SELECT DATE_FORMAT(TIMEDIFF(CURDATE(), 'nextVote')) FROM auths WHERE voter_ip = :ip");
        $this->get->execute(array(":ip" => $ip));
    }

    public final function setNextVote($ip)
    {
        $this->insert = $this->pdo->prepare("UPDATE auths SET nextVote = CURDATE() + 12 HOURS WHERE voter_ip = :ip");
        $this->insert->execute(array(":ip" => $ip));
    }

            $minutes = floor($vote->getTimeLeft($_SERVER['REMOTE_ADDR']) / 3600);
            $hours = floor( ($vote->getTimeLeft($_SERVER['REMOTE_ADDR']) / 60) % 60);

用字段名“NextTime”(或其他任何名称)创建一个表,并将

CURDATE() + 12 HOURS
在那里

如果在此之前发生任何更新。。忽略它

使用SQLs

比如:

选择日期\格式(TIMEDIFF(CURDATE(),'NameOfField')

然后使用您最喜欢的服务器端语言将秒数转换为更好的值

e、 g.在PHP中:

$totalSeconds = /* get from query using PDO or mysqli */

$hours = floor($totalSeconds / 3600);
$minutes = floor(($totalSeconds / 60) % 60);

echo "You will be about to vote in $hours hours, and $minutes minutes.";

您可以使用MySQL获取两个日期之间的时间差,如下所示:

SELECT
    TIMEDIFF('2013-05-12 10:00:00','2013-03-11 11:23:00') as total_time,
    HOUR(TIMEDIFF('2013-05-12 10:00:00','2013-03-11 11:23:00')) as hour_dif,
    MINUTE(TIMEDIFF('2013-05-12 10:00:00','2013-03-11 11:23:00')) as minute_dif
结果是这样的

total_time: 22:37:00
hour_dif: 22
minute_dif: 37

您可以使用当前日期字段替换日期示例:TIMEDIFF(date1,date2)

是的,但我想回复如下内容:“您将能够在11小时04分钟后投票”使用PHP diff()函数从现在开始时间与“Nexttime”字段值如果您还不知道,您可以使用编辑器中的
code
按钮缩进您的SQL、其他代码和输出示例。首次发布!对不起,如果它让你的眼睛流血的话。没那么糟糕!只需使用上面的
edit
链接来调整它
:)
致命错误:未捕获异常“PDOException”,消息为“SQLSTATE[42000]:语法错误或访问冲突:1582在C:\xampp\htdocs\vote\includes\class\vote.class.php中调用本机函数“DATE_FORMAT”时参数计数不正确:174堆栈跟踪:#0 C:\xampp\htdocs\vote\includes\class\vote.class.php(174):PDOStatement->execute(Array)#1 C:\xampp\htdocs\vote\index.php(644):vote->getTimeLeft('127.0.0.1')#2{main}在第174行的C:\xampp\htdocs\vote\includes\class\vote.class.php中抛出