MYSQL + PHP比较存储在数据库中的实时时间和日期时间

时间:2013-04-21 17:31:55

标签: php mysql voting

<?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 ;

    }

        }
?>

我没有得到所需的结果。

我已经尝试过你告诉我的内容,并且我以这种方式制作了代码

但仍然会执行查询而不是让msg“稍后再回来”查询应该只在存储的时间早于实时时间提前6小时才能生效

:(请帮帮我

1 个答案:

答案 0 :(得分:0)

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

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

NOT 混合php和mysql日期逻辑。 MySQL完全能够通过now()CUR_DATE及其他各种功能生成“现在”日期。

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

UPDATE ... `lastvoted` = now()

就是你所需要的一切。