0
<?php
define('INCLUDE_CHECK',true);
error_reporting(0);
session_name('tzLogin');
session_start();
$user = $_SESSION['name'];

if($user or die('Please login to continue')) {      

   mysql_connect("localhost","root","password");
   mysql_select_db('db_account');
   require_once 'Functions/Import.php';



   $l = isset ( $_GET [ 'l' ] ) ? $_GET [ 'l' ] : null ;


   if ( ! is_null ( $l ) ) {
$gd= mysql_query("SELECT * FROM t_account WHERE name='$user' AND (now() - INTERVAL 6 HOUR > lastvoted)");

          if($gd or die("Come back later you still have time left to vote"))
          {
$qry = "UPDATE t_account SET `vo` = `vo` + 1, `lastvoted` = now() WHERE name='$user'";
$result = @mysql_query($qry);
}
else {

}
          header ( 'Location: ' . base64_decode ( $l ) , true , 301 ) ;

          exit ;

    }

        }
?>

我没有得到所需的结果。

嗯,我试过你告诉我的,我用这种方式编写代码

但仍然执行查询而不是给出消息“稍后回来”查询应该只在存储时间比实时时间早 6 小时时才有效

:(请帮帮我

4

1 回答 1

0

您的查询是完全错误的。date()在 MySQL 中,不会像在 PHP 中那样将日期值“格式化”为字符串。MySQLdate()提取日期时间值的日期部分并将其作为字符串返回,例如

date('2013-04-21 12:00:00') -> '2013-04-21'

不要像那样混合 php 和 mysql 日期逻辑MySQL 完全能够通过now()CUR_DATE以及各种其他函数生成“现在”日期。

SELECT ... WHERE (now() - INTERVAL 6 HOUR > lastvoted)

UPDATE ... `lastvoted` = now()

是你所需要的全部。

于 2013-04-21T17:57:49.813 回答