我试图将用户输入的日期和时间与存储在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并且它们完全相同。
答案 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'
字符串,如果将它们与!==
进行比较