无法将时间戳插入MySQL数据库

时间:2019-06-13 14:57:40

标签: php mysql

我有一个表单,用户可以在其中插入名称/地址等信息。创建和修改条目的时间带有时间戳。 “修改的”字段曾经只默认为0000-00-00,但最近却导致了错误

Array
(
    [0] => Invalid query: Field 'modified' doesn't have a default value
)

我环顾四周,有人建议将修改后的列设置为“ NULL”,但数据库不允许这样做

我怀疑问题是,当用户单击“提交”时,它没有将任何内容提交到“修改”列中,因为我收到的第二条错误消息是

INSERT INTO stores (name,cat_id,address,telephone,email,website,description,embed_video,default_media,latitude,longitude,created) VALUES('bsg',',29,','4750 abc dr','11212121212','abc@gmail.com','','drrrr','','image','44.7847745','-93.19667930000003','2019-06-13 15:28:39')

请注意,被插入的参数之一未列出'modified'属性。我猜这就是问题所在,但idk可以在哪里解决。

我检查了我的settings.php,validate.php,config.inc.php,但到目前为止,我所看到的任何内容似乎都无法解决问题

2 个答案:

答案 0 :(得分:0)

有多种方法可以解决您的问题,其中一些方法比这种方法更好/更有效,但是这种方法与您在问题中提供的信息紧密匹配。

在您的数据库中 配置modified列,以便:

  • 它接受NULL作为值。 (即取消设置NOT-NULL(如果之前已设置)
  • (可选)将默认值添加到您选择的0000-00-00
  • 的列中

(可选)在您的插入语句中的代码中:

  • modifiedNULL的{​​{1}}列明确指定一个值

答案 1 :(得分:0)

解释Alex的答案并使用一些代码示例,您可能想让该字段接受空值:

ALTER TABLE `stores` CHANGE `modified` `modified` DATE  NULL;

或者仅具有默认值'0000-00-00'(这是以前的行为,这是一件很糟糕的事情,当在MySQL中激活更严格的模式时,可能会导致将来出现问题)

ALTER TABLE `stores` CHANGE `modified` `modified` DATE  NOT NULL  DEFAULT '0000-00-00';

或者让MySQL在修改时使用当前日期(这是我的选择),甚至不更改mysql结构中的任何内容:

INSERT INTO stores (name,cat_id,address,telephone,email,website,description,embed_video,default_media,latitude,longitude,created,modified) VALUES('bsg',',29,','4750 abc dr','11212121212','abc@gmail.com','','drrrr','','image','44.7847745','-93.19667930000003','2019-06-13 15:28:39',CURRENT_DATE);

甚至是您想要的'0000-00-00'值:

INSERT INTO stores (name,cat_id,address,telephone,email,website,description,embed_video,default_media,latitude,longitude,created,modified) VALUES('bsg',',29,','4750 abc dr','11212121212','abc@gmail.com','','drrrr','','image','44.7847745','-93.19667930000003','2019-06-13 15:28:39','0000-00-00');