通过PHP插入时,MySQL TIMESTAMP不会更新

时间:2013-04-29 10:16:01

标签: php mysql

所以我在MySQL中有一个列,但PHPMyAdmin看起来像这样

PHPMyAdmin shot

当我通过PHPMyAdmin插入到表中并且没有在时间列中放入任何内容时,它会工作并将时间放入,但是当我通过PHP使用以下脚本执行此操作时

mysql_query("INSERT INTO `products` 

     VALUES ('', '$title', '', '$photo', '$price', '$details', '$description_short', '$description', '$dimensions', '$colour', '$scatid', '$type', '$brand', 'Y', '$size')") ;  

(第三个''是时间列)它似乎把时间戳放到了00:00:00

我已经浏览了一下,看起来正在通过查看其他Stack Overflow帖子做正确的事。

提前感谢您的帮助

6 个答案:

答案 0 :(得分:2)

因为你把它作为空白''

如果您希望它是当前时间戳,那么查询应该是

INSERT INTO products(list of column_name except time column_name) values (values of list of columns present in column list)

您还可以使用NOW()在数据库中插入日期和时间

答案 1 :(得分:2)

可能不使用''可能是使用问题

NOW()

答案 2 :(得分:1)

您正在时间戳列中插入空白(0)值。

你可以:

1 - 修改您的查询以排除时间戳列:

插入(foo,bar)值(“val1”,“val2”)

2 - 在值

内的第三个位置用CURRENT_TIMESTAMP替换“”

答案 3 :(得分:1)

你实际上有两个选择:

选项1:

明确使用“CURRENT_TIMESTAMP”(或其他人所说的“NOW()”),如下所示:

"INSERT INTO `products` VALUES ('', '$title', 'CURRENT_TIMESTAMP', '$photo', '$price', '$details', '$description_short', '$description', '$dimensions', '$colour', '$scatid', '$type', '$brand', 'Y', '$size')"

选项2:

隐式使用默认值。要使用它,您需要指定要插入的列(在表名“products”和关键字VALUES之间),在列列表和值列表中跳过时间戳列。

我个人更喜欢选项2用于调试目的(您可以立即查看哪些列适用于哪些值,反之而不查看数据库模式)

答案 4 :(得分:1)

尝试将默认值设置为CURRENT_TIMESTAMP,而不是将其放在属性中。

答案 5 :(得分:1)

使用NOW()mysql命令作为timestamp列的值

mysql_query("INSERT INTO `products` VALUES ('', '$title', NOW(), '$photo', '$price', '$details', '$description_short', '$description', '$dimensions', '$colour', '$scatid', '$type', '$brand', 'Y', '$size')") ;