2016-06-03 2 views
1

В таблице mysql у меня есть поле с именем date, его тип называется timestamp, а по умолчанию CURRENT_TIMESTAMP. Однако, если я покину поле в mysql, я получаю сообщение об ошибке. Когда я пытаюсь вставить что-то в него, как time(), я получаю дату как 0000-00-00 00:00:00.Как вставить метку времени в таблицу mysql

<?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"; 
    } 

    ?> 
+2

** Примечание: ** 'mysql_ *' функции устарели с PHP 5.5 и удалены в PHP 7, вместо этого используйте 'mysqli_ *' функции или PDO. – Panda

+0

Пожалуйста, можете ли вы показать свою структуру таблицы здесь? –

+0

См. [Этот ответ] (http://stackoverflow.com/a/12120457/3101532) относительно дат форматирования для MySQL – shamsup

ответ

8

В дополнение к проверке вашей установки таблицы для подтверждения того, что поле установлено 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')" 

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

$date = date("Y-m-d H:i:s"); 
1
$insertation = "INSERT INTO contactinfo (name, email, subject, date, comments) 
VALUES ('$name', '$email', '$subject', CURRENT_TIMESTAMP, '$comments')"; 

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

-1

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

Смежные вопросы