从php到mysql的日期字段返回错误0000-00-00


Date field from php to mysql returning error 0000-00-00

我有一个php表单,必须手动输入日期。当我把日期键入Y/M/D时,我没有任何问题。但是,如果我输入日期为d/m/y,它将以0000-00-00 的形式存储在我的数据库中

$TransactionDate= $row['DealDate'];

TransactionDate=我的字段名称DealDate=我的列名

我需要帮助!

试试这个代码

$date = mysql_real_escape_string($_POST['DealDate']);
  1. 如果您的MySQL列是DATE类型:

    $date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
    
  2. 如果您的MySQL列是DATETIME类型:

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

如果日期分隔符是-您不能使用strototime(),因为它不能使用短划线分隔符,它将尝试做减法。

在这种情况下,使用正则表达式

$date = mysql_real_escape_string($_POST['DealDate']);
$date = preg_replace('#('d{2})/('d{2})/('d{4})'s(.*)#', '$3-$2-$1 $4', $date);
echo $date;

MySQL唯一可接受的直接使用日期格式是YYYY-mm-dd hh:mm:ss。插入任何其他内容几乎总是会导致插入0000-00-00默认日期值。

如果您的日期字符串是其他格式的,则必须首先将其转换为MySQL可接受的格式。