将用户输入的日期与MySQL日期时间字段进行比较

时间:2011-04-23 17:23:15

标签: php mysql

我试图将用户输入的日期和时间与存储在MySQL数据库中的日期和时间(正在使用的日期时间字段)进行比较。即使值看起来完全相同,PHP仍然认为它们是不同的。谁能说清楚我做错了什么?

以下以正确的格式给出了日期:“2011-04-22 18:36:00”,这是从日期选择器生成的,以及2小时和分钟的2个单独的文本框。

   if(isset($_POST['enableReminder'])) {
        $_POST['reminder_date'] = str_replace("/","",$_POST['reminder_date']);
        $day3 = substr($_POST['reminder_date'],0,2);
        $month3 = substr($_POST['reminder_date'],2,2);
        $year3 = substr($_POST['reminder_date'],-4);
        $taskReminderDate = $year3.'-'.$month3.'-'.$day3;
        $taskReminderHour = $_POST['reminder_hour'];
        $taskReminderMinute = $_POST['reminder_minute'];
        $taskReminderDBpre = $taskReminderDate.' '.$taskReminderHour.':'.$taskReminderMinute.':00';
        $taskReminderDB = date( 'Y-m-d H:i:s', strtotime($taskReminderDBpre) );
        $taskReminderDB2 = "'".$taskReminderDB."'";
    } else {
        $taskReminderDB = 'NULL';
    }

然后我尝试比较数据库中的内容,如果值不同,则相应地设置变量:

$taskReminderCompare = strtotime($row['reminder_date']);

    if($taskReminderDB !== $taskReminderCompare) {
        $taskReminderSent = 0;
    } else {
        $taskReminderSent = 1;
    }

但即使我回显$ taskReminderDB和$ taskReminderCompare,它总是返回0并且它们完全相同。

1 个答案:

答案 0 :(得分:3)

您的$taskReminderDB变量似乎是这样创建的:

$taskReminderDB = date( 'Y-m-d H:i:s', strtotime($taskReminderDBpre) );

这意味着它将包含字符串 - 日期格式为YYYY-MM-DD hh:mm:ss


另一方面,您的$taskReminderCompare变量以这种方式创建:

$taskReminderCompare = strtotime($row['reminder_date']);

这意味着它将包含一个UNIX时间戳 - 这是一个整数


因此,您的$taskReminderDB$taskReminderCompare变量似乎不包含相同的内容。

可以肯定的是,您可以使用var_dump()函数获取有关这些内容的信息(值和类型):

var_dump($taskReminderDB, $taskReminderCompare);


作为旁注:即使这两个变量包含相同的值,因为您使用!==运算符(而不是!=运算符,您必须确保值的类型相同。

即。 123456整数不等于'123456'字符串,如果将它们与!==进行比较