【问题标题】:MYSQL + PHP comparing live time and datetime stored in databaseMYSQL + PHP比较存储在数据库中的实时时间和日期时间
【发布时间】:2013-04-21 17:31:55
【问题描述】:
<?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 小时时才有效

:(请帮帮我

【问题讨论】:

  • 你能发布你的结构吗?您的查询可以合并。并且可以删除错误器

标签: php mysql voting


【解决方案1】:

您的查询完全错误。 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()

就是你所需要的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-04
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多