如何在我的mysql表中插入时间戳

时间:2016-06-03 14:16:11

标签: php mysql

在mysql表中我有一个名为date的字段,其类型称为timestamp,默认为CURRENT_TIMESTAMP。但是,如果我在mysql中将该字段留空,则会出错。当我尝试像time()那样插入一些东西时,我会收到日期为00:00:00。

  <?php
    $name         = "";
    $email        = "";
    $subject      = "";
    $comments     = "";
    $nameError    = "";
    $emailError   = "";
    $subjectError = "";
    $x            = 5;
    function filterData($data)
    {
        $data = htmlspecialchars($data);
        $data = stripslashes($data);
        return $data;
    }
    $connection = mysql_connect('host', 'user', 'pass');
    if (!$connection) {
        die('Could not connect: ' . mysql_error());
    }


    $select_database = mysql_select_db("contact");

    if (!$select_database) {
        echo "could not select database " . mysql_error();

    }
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        //handles the name 
        $name = filterData($_POST["name"]);
        if (empty($name)) {
            $nameError = "please don't leave the name field blank";
        }
        //handles the email
        $email = filterData($_POST["email"]);
        if (empty($email)) {
            $emailError = "please don't leave the email field blank";
        }

        //handles the subject
        $subject = filterData($_POST["subject"]);
        if (empty($subject)) {
            $subjectError = "please don't leave this field blank";
        }

        $comments = filterData($_POST["comments"]);

    }

    $insertation = "INSERT INTO contactinfo (name, email, subject, date, comments)
        VALUES ('$name', '$email', '$subject', '', '$comments')";

    $insertationQuery = mysql_query($insertation, $connection);

    if (!$insertationQuery) {
        echo "Could not process your information " . mysql_error();
    } else {
        echo "Thank you for submitting the information";
    }

    ?>

8 个答案:

答案 0 :(得分:17)

除了检查表设置以确认字段设置为NOT NULL且默认值为CURRENT_TIMESTAMP之外,您还可以通过以兼容的字符串格式写入PHP中的日期/时间值用MySQL。

 $timestamp = date("Y-m-d H:i:s");

这将以字符串格式为您提供当前日期和时间,您可以将其插入MySQL。

答案 1 :(得分:7)

请尝试CURRENT_TIME()now()个功能

"INSERT INTO contactinfo (name, email, subject, date, comments)
VALUES ('$name', '$email', '$subject', NOW(), '$comments')"

OR

"INSERT INTO contactinfo (name, email, subject, date, comments)
VALUES ('$name', '$email', '$subject', CURRENT_TIME(), '$comments')"

或者您可以尝试使用PHP date函数here

$date = date("Y-m-d H:i:s");

答案 2 :(得分:2)

$insertation = "INSERT INTO contactinfo (name, email, subject, date, comments)
VALUES ('$name', '$email', '$subject', CURRENT_TIMESTAMP, '$comments')";

您可以使用此查询。 CURRENT_TIMESTAMP

答案 3 :(得分:0)

您可以尝试使用 TIMESTAMP(curdate(),curtime())来使用当前时间。

答案 4 :(得分:0)

您不需要手动插入当前时间戳,因为MySQL提供了此功能来自动存储它。创建MySQL表后,只需执行以下操作:

  • 选择TIMESTAMP作为列类型
  • Default的值设置为CURRENT_TIMESTAMP
  • 然后仅insert插入表中的任何行,而无需为time列插入任何值

插入行时,您会看到current timestamp被自动插入。请看所附图片。 enter image description here

答案 5 :(得分:0)

仅在未为该列提供值的情况下才使用MySql中的列的DEFAULT值。 因此,如果您

INSERT INTO contactinfo (name, email, subject, date, comments)
VALUES ('$name', '$email', '$subject', '', '$comments')

您没有为列DEFAULT使用date值,但是您提供的是空字符串,因此会出现错误,因为您不能在{{ 1}}列。 如果您使用DATETIME,则同样适用,因为NULL也是一个值。 但是,如果从要插入的列的列表中删除该列,则MySql将使用为此列指定的NULL值(或数据类型默认值)

答案 6 :(得分:0)

如果您要插入/更新特定的整数时间戳,则可以将PHP date()函数与时间戳一起用作第二个arg:

date("Y-m-d H:i:s", $myTimestamp)

答案 7 :(得分:0)

您可以在传递 CURRENT_TIMESTAMP() 查询时尝试 function DML