日期存储到数据库时会出错

时间:2014-10-13 22:58:05

标签: php mysql sql date

我有两个日期选择器,格式为dd / mm / YYYY。问题是,当我将它们存储到数据库时,它们会出现问题。输出是“1970-01-01”。我也使用mySQL STR_TO_DATE函数和php内置函数的日期格式...我不知道为什么我的日期不起作用。有人能告诉我为什么我的日期有错误吗?

以下是我正在使用的代码:

$datumDO=$_POST['datepicker'];
$datumOD=$_POST['datepicker1'];
$time = strtotime($datumDO);
$NewDatum = date('d/m/Y',$time);    
$time = strtotime($datumOD);
$NewDatumOD = date('d/m/Y',$time);
    if ($stmt = $dbConnection->prepare("INSERT INTO `cat-item` (id_cat, id_item, datumOD, datumDO) VALUES (?,?,STR_TO_DATE(?,'%d/%m/%Y'),STR_TO_DATE(?,'%d/%m/%Y'))")){
        $stmt->bind_param('iiss', $category, $item, $NewDatum , $NewDatumOD;
        $stmt->execute();
        $stmt->close();
}

2 个答案:

答案 0 :(得分:1)

如果您的日期选择器以dd/mm/YYYY格式提供日期(/作为分隔符),则您的函数输入不正确。

strtotime

  

通过查看,可以消除m / d / y或d-m-y格式的日期   各个组件之间的分隔符:如果分隔符是a   斜线(/),然后假设美国m / d / y ;而如果   separator是短划线( - )或点(。),然后是欧洲d-m-y格式   假设。为避免潜在的歧义,最好使用ISO 8601   (YYYY-MM-DD)日期[source]

答案 1 :(得分:0)

$datumDO= date('Y-m-d', strtotime($_POST['datepicker']));
$datumOD= date('Y-m-d', strtotime($_POST['datepicker1']));
    if ($stmt = $dbConnection->prepare("INSERT INTO `cat-item` (id_cat, id_item, datumOD, datumDO) VALUES (?,?,?,?)")){
        $stmt->bind_param('iiss', $category, $item, $datumDO, $datumOD;
        $stmt->execute();
        $stmt->close();
}

试试这个......希望这有帮助