2012-11-30 125 views
2

我已经查看了几个与此问题有关的线程,但仍无法弄清楚我的代码出了什么问题。将日期插入到MySql数据库时遇到问题

当我将它带入我的代码,将出生日期字段更新为“yyyy-dd-mm”时,我从我的表单中带入了一个日期字段,格式为“mm-dd-yyyy”使用下面的

$birth=$_POST['dateBorn']; 
$dateB = date('Y-d-m',strtotime($birth)); 
$finaldateB = ($dateB === false) ? '0000-00-00' : date('Y-d-m',strtotime($dateB)); 

当我回声变量的值(使用的2012年11月23日出生日期)我看到的下列值他们出生= 2012年11月23日,dateB = 1969- 31-12,finaldateB = 1969-31-12

我明明做一些不正确的,一直没能找到其中

TIA

为了把事情功能,我至少发现了一个变通可能不是优雅,但给了我,我需要现在

$dateB = $birth; 
$dateborn_a=explode("-",$birth); 
$yearborn = $dateborn_a[2]; 
$dayborn = $dateborn_a[1]; 
$monthborn = $dateborn_a[0]; 
$dateOfBirth=$yearborn."-".$monthborn."-".$dayborn; 

结果,然后使用该值在$ dateOfBirth中更新表格。它适用于迄今为止我测试过的所有记录。

+0

什么是场为表中的日期类型?它是日期,日期时间,varchar? –

回答

2

您正在使用Y-d-m而不是Y-m-d。 MySQL的日期格式应该是YEAR-MONTH-DAY。使用

$dateB = date('Y-m-d',strtotime($birth)); 

应该修复它。

+0

这是加重的,它仍然在回应1969-12-31 ---数据库中的字段是'日期', – Hank

+0

@Hank $ dateB的值是什么? –

+0

韦恩,如果我使用strtotime($出生)它回来空 – Hank

5
$dateB = date('Y-d-m',strtotime($birth)); 

这里

y is for year 
d is for day 
m is for month 

所以甲将yyyy-dd-mm

尝试

$dateB = date('Y-m-d',strtotime($birth));