date()echo是正确的日期和时间格式,但不能正确存储在数据库中

时间:2016-03-02 15:56:55

标签: php mysql date datetime

我有以下代码片段:

date_default_timezone_set('UTC');
if (!isset($_POST['secret']) && $post_msg != "" ) { // checkbox unchecked processing...
    // Checkbox is selected
    $date_of_msg= date('l jS F Y h:i');
    $msg_sent_by  = $username;
    $insert_query = "INSERT INTO user_thoughts VALUES ('','$post_msg','$date_of_msg','','' ,'$attach_name','$msg_sent_by','yes')";
    $run_query = mysqli_query($connect, $insert_query) or die(mysqli_error());
}

当我回显$date_of_msg时,日期和时间将按预期打印出来,但是当运行上面的INSERT查询时,数据库中的字段将存储0000-00-00 00:00:00

将存储$date_of_msg的字段称为post_details,类型为datetime。我知道有一个名为date_to_str的函数,似乎有与之相关的问题,例如this。但是那个问题的答案是转换手动输入的日期,而我想得到用户发帖的时间。我认为解决方案是在插入date_to_str变量时使用$date_of_msg函数?但是我无法理解它是如何工作的?

3 个答案:

答案 0 :(得分:1)

你的

scala> case class Page(url: String) {
 |   var content: String = new URL(url).getContent().toString;
 | }
 defined class Page


 scala> Page("http://www.google.de")
 res5: Page = Page(http://www.google.de)

发送的结果如下:

  

2016年3月2日星期三10:00

因此您将该值date('l jS F Y h:i'); 视为日期时间不匹配

将其更改为:

0000-00-00 00:00:00

或使用此文档将日期格式化为您需要的内容。 http://php.net/manual/en/function.date.php

答案 1 :(得分:0)

这可能是因为您的Web服务器(apache im guess)配置与您的mysql配置不同。

这就是为什么你会遇到一些困惑。

有几种方法可以解决这个问题,但它需要您选择一种格式并随之运行。

  1. 将记录插入mysql时,请告诉它要使用的格式。

    $ query_manual =" INSERT INTO dateplayground(dp_name,dp_datetime) 价值观(' DATETIME:手动日期时间',' 1776-7-4 04:13:54')";

  2. 研究mysql和apache日期时间配置并修复它们,使它们具有完全相同的日期时间格式。

答案 2 :(得分:0)

在mysql datetime字段中,您只能插入格式为Y:m:d H:i:s

的日期时间

请使用格式相同的日期时间

$date_of_msg = date('Y:m:d H:i:s');