2013-05-29 49 views
0

我发送的日期按以下格式的服务器:“01-01-1970”发布日期问题同MySQL的

我这样做是为了获取日期和格式化:

$datetime = date('d-m-Y H:i:s', strtotime($_POST["date"] . "19:31:30")); 

然后我用PDO将其发送到数据库通过简单地做:

$stmt = $db->prepare("INSERT INTO events 
      (runnerID,eventDateTime,duration, 
      cost,address,city,country, 
      postcode,description) VALUES 
(?,?,?,?,?,?,?,?,?); 
    "); 
$stmt->execute(array($userID,$datetime,$_POST["duration"],$_POST["eventPrice"], 
    $_POST["addressLine1"],$_POST["addressCity"],$_POST["addressCountry"],$_POST["addressPostCode"],$_POST["eventDesc"])); 

但是当我到数据库并保存为:“0000-00-00 00:00:00”的列的类型是“日期时间“

有谁知道为什么会发生这种情况?

+0

你能告诉我们插入代码吗? – cheesemacfly

+0

更新对不起,希望它有帮助 – LmC

+0

你试过'$ datetime'吗? – Jim

回答

3

应该是日期( “YMD H:我:■” .....

$datetime = date('Y-m-d H:i:s', strtotime($_POST["date"] . " 19:31:30")); 

...你的时间

+0

,但正如我所说即时获取日期在“”01-01-1970“ – LmC

+0

如果您的$ _POST ['date']是在格式dmY与转换无关,它可能导致strtotime疯狂,也许你应该将它改为Ymd – steven

+0

'如果分隔符是破折号( - )或点(。),那么欧洲的dmy格式是假设.'所以我猜你的答案是有道理的 – cheesemacfly

1

你所需要的日期时间字段前有一个缺失的空间以单引号您的价值'$ datetime'这将填充您的字段我已经犯了几次相同的错误

+0

所有零你的意思是单引号('),而不是反向提示(')? –

+0

是的,感谢收到乔治。 – Jim

0

尝试回显$ datetime varible以查看您在运行查询之前获得的内容

你也发布未经验证的后期值到数据库,这让你很容易受到SQL注入攻击。在运行查询之前验证每个帖子值。

filter input php documentation

+0

当回显我得到“29-10-1992 19:31:30” – LmC

+0

,这是一个mysql日期时间字段的错误格式 – steven

+0

2038-01-19 03: 14:07(ne编辑为这种格式) – user466764