我有一个文本框,在php中输入日期。因为我希望日期是我正在使用的特定格式。
date("d.m.Y", strtotime())
转换日期。如果没有给出日期或者我将文本框留空,则会将1970-01-01输入数据库。我怎么解决这个问题?
这是我的代码
$d_date= clean($_POST['datum']);
$newdate = date("Y-m-d", strtotime( $d_date));
如果$d_date
值为null,则它将输入1970-01-01到数据库。
答案 0 :(得分:7)
使数据库中的字段可以为空,并且在表单中未提交日期时将其设置为NULL。 mysql的默认行为是将日期设置为默认值,即1970-01-01(unix epoch)
答案 1 :(得分:1)
PHP strtotime()
失败时返回false
。这包括参数为null,空白。或任何其他无效格式的字符串。
因此,strtotime(null)
会返回bool(false)
。
date()
函数的第二个参数是整数,因此当您致电date("Y-m-d", false)
时,false
会转换为0
,date("Y-m-d", 0)
会返回纪元日期。
在将值插入数据库之前,这是一种处理此问题的简单方法:
// Default to null
$newdate=null;
// Only proceed if strtotime() succeeds
if($d_date=strtotime($_POST['datum'])) {
// Since we have a valid time, turn to date string
$newdate=date("Y-m-d", $d_date);
}
然后,只需在日期列上允许NULL,以便可以插入null。
答案 2 :(得分:0)
<强> you can use this to check strtotime return false or true
强>
$from_date=strtotime($_POST["from"]);
$from_date=($from_date ? date("Y-m-d", $from_date) : '');
$to_date=strtotime($_POST["to"]);
$to_date=($to_date ? date("Y-m-d", $to_date) : '');