在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";
}
?>
答案 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
列插入任何值答案 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
。