Как вставить метку времени в таблицу mysql

В таблице mysql у меня есть поле с именем date, его тип называется timestamp, а по умолчанию - CURRENT_TIMESTAMP. Однако, если я покину поле в mysql, я получаю сообщение об ошибке. Когда я пытаюсь вставить что-то в него, как time(), я получаю дату как 0000-00-00 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";
    }

    ?>

Ответы

Ответ 1

В дополнение к проверке настройки вашей таблицы, чтобы подтвердить, что для поля установлено значение NOT NULL с по умолчанию CURRENT_TIMESTAMP, вы можете вставлять значения даты/времени из PHP, записывая их в строчном формате, совместимом с MySQL.

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

Это даст вам текущую дату и время в строчном формате, который вы можете вставить в MySQL.

Ответ 2

Пожалуйста, попробуйте CURRENT_TIME() или now() функции

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

ИЛИ ЖЕ

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

ИЛИ вы можете попробовать с функцией date PHP здесь:

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

Ответ 3

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

Вы можете использовать этот запрос. CURRENT_TIMESTAMP

Ответ 4

Вы можете попробовать использовать TIMESTAMP (curdate(), curtime()) для использования текущего времени.

Ответ 5

Вам не нужно вставлять текущую временную метку вручную, поскольку MySQL предоставляет эту возможность для ее автоматического сохранения. Когда таблица MySQL создана, просто сделайте это:

  • выберите TIMESTAMP качестве типа столбца
  • установите значение по Default CURRENT_TIMESTAMP
  • затем просто insert любые строки в таблицу, не вставляя никаких значений для столбца time

Вы увидите, что current timestamp автоматически вставляется при вставке строки. Пожалуйста, смотрите прикрепленную картинку. enter image description here

Ответ 6

Значение DEFAULT для столбца в MySql используется только в том случае, если ему не предоставлено значение для этого столбца. Так что если вы

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

Вы не используете значение DEFAULT для date столбца, но вы предоставляете пустую строку, поэтому вы получаете ошибку, поскольку вы не можете сохранить пустую строку в столбце DATETIME. То же самое применимо, если вы используете NULL, потому что снова NULL является значением. Однако, если вы удалите столбец из списка вставляемого столбца, MySql будет использовать значение DEFAULT указанное для этого столбца (или тип данных по умолчанию)