我有一个php表单,必须手动输入日期。当我把日期键入Y/M/D时,我没有任何问题。但是,如果我输入日期为d/m/y,它将以0000-00-00 的形式存储在我的数据库中
$TransactionDate= $row['DealDate'];
TransactionDate=我的字段名称DealDate=我的列名
我需要帮助!
试试这个代码
$date = mysql_real_escape_string($_POST['DealDate']);
如果您的MySQL列是DATE类型:
$date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
如果您的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可接受的格式。