Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP的日期和时间在MySQL中写入0000-00-00:00:00_Php_Mysqli - Fatal编程技术网

PHP的日期和时间在MySQL中写入0000-00-00:00:00

PHP的日期和时间在MySQL中写入0000-00-00:00:00,php,mysqli,Php,Mysqli,我有一个带有JS日期选择器的PHP,用于日期和时间,它将所有字符串以这种格式“19.08.2012@20:18”保存在一个名为$date的变量中 如果我将此变量直接放入查询中,它会在数据库中写入“0000-00-00:00:00”。 目前我的脑袋里有一个大黑洞,所以我需要帮助 如何在数据库中写入正确的选定日期和时间 对不起,我觉得不太重要,这是代码 index.php <script type="text/javascript"> $(function() { $("#da

我有一个带有JS日期选择器的PHP,用于日期和时间,它将所有字符串以这种格式“19.08.2012@20:18”保存在一个名为$date的变量中

如果我将此变量直接放入查询中,它会在数据库中写入“0000-00-00:00:00”。 目前我的脑袋里有一个大黑洞,所以我需要帮助

如何在数据库中写入正确的选定日期和时间


对不起,我觉得不太重要,这是代码

index.php

<script type="text/javascript">
$(function() {
    $("#date").datetimepicker({
        dateFormat:'dd.mm.yy',
        separator: ' @ '
    });
});
</script>

<form action="setting.php" method="post">
 <table>
 <tr>
  <td><label for="date">Date:</label></td>
  <td><input type="text" id="date" name="date"/></td>
 </tr>
</table>
<input type="submit" name="submit" />
functions.php

.......
.......
// Write the fields to the table
$query_create = mysqli_query($link, "INSERT INTO table VALUES (null, '$id', '$date')") or die ('Could not connect: ' . mysqli_error($link));
.......
.......

MySQL数据库中的日期字段是“datetime”。

您收到的日期格式是MySQL无法识别的。您必须首先将其转换为,然后才能将其传递给INSERT

此转换可以通过两种方式完成:

  • 您可以配置JS日期时间选择器,使其返回日期为“YYYY-MM-DD HH:MM:SS”
  • 您可以在PHP中进行上述转换

无论您选择哪一种,在保存到数据库时都要坚持使用年-月-日格式的日期,这样您就不会疯狂地发现为什么“08/02”被认为是8月2日而不是2月8日。

您需要转换变量以指定MySQL的正确格式,即YYYY-MM-DD HH:NN:SS。这就是全部。通过向其抛出一个子字符串函数来完成。如果直接在查询中写入字符串“19.08.2012@20:18”,MySQL根本无法解析它。您必须首先转换它,这取决于字段(列),它是INT、TIMESTAMP或DATETIME

MySQL附带了一些方便的工具,所以你应该坚持使用DATETIME

在PHP中,可以使用
gmmktime()
gmdate()
对其进行转换。为了让您的生活更轻松,请确保MySQL服务器在UTC下运行,并且在将其插入MySQL之前,您的应用程序将日期转换为UTC


获取输出日期时,只需使用适当的
date\u default\u timezone\u set()

您需要将日期转换为mysql日期格式 您可以先使用explode()函数删除日期中的“.”符号,然后使用mktime()函数生成mysql日期格式

$date = exolode('.', $_POST['date']);
$unixtime= mktime(0, 0, 0, $date[1], $date[0], $date[2]);
$date1 = date("H-m-d H:i:s", $unixtime);
$final_Date = strtotime($date1);

你能和我们分享一些源代码吗?我有一个预感可能是什么问题,但如果你不给我们源代码,我不能肯定地说。。如果您将函数本身提交到数据库(在它计算之前),并且您在这段时间内提交,比如说apostrephes(“”),它将尝试提交一个不是datetime的变量,因此只提交一个0 datetime。我发现了问题,是字符串中的@。我把它拆了,现在一切都很好。总是愚蠢的错误:P谢谢你的帮助。这很有帮助。我必须使用的php中的实际格式是“Y-m-dh:I:s”。我发现了问题,是字符串中的@。我把它拆了,现在一切都很好。总是愚蠢的错误:P谢谢你的帮助。我发现了问题,是字符串中的@。我把它拆了,现在一切都很好。总是愚蠢的错误:P谢谢你的帮助。
$date = exolode('.', $_POST['date']);
$unixtime= mktime(0, 0, 0, $date[1], $date[0], $date[2]);
$date1 = date("H-m-d H:i:s", $unixtime);
$final_Date = strtotime($date1);