【问题标题】:timestamp is not inserted in mysql table [closed]时间戳未插入mysql表[关闭]
【发布时间】:2013-02-27 10:44:00
【问题描述】:

我的表结构如下:

recid                   int(11) 
userid                  int(11)
reset_requested_on      timestamp CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
valid_until             timestamp
sessionid               varchar(255)

当我 print_r 我的数组时,我有这些数据:

    Array
(
    [userid] => 428
    [reset_requested_on] => 1361961459
    [valid_until] => 1362134259
    [sessionid] => b6d444e0ea14768a724308fd1aa64b6d
)

当我执行插入时,只有 recid、user id 和 sessionid 被插入,而时间戳字段为空。谁能告诉我我做错了什么?

编辑:

当我手动添加记录时,如果我在时间戳字段中选择 FROM_UNIXTIME,我会正确插入记录。

有谁知道我怎样才能将此选项设置为表格中的默认选项?

问候,卓然

【问题讨论】:

  • 除非您显示插入的代码和从表中选择的代码,否则我们无法判断您做错了什么。
  • Can anyone tell me what i am doing wrong? 是的,您错过了发布代码。
  • 由于记录被部分插入,我怀疑代码是问题所在。当我尝试手动插入记录时,两个时间戳字段都出现超出范围的错误。
  • 有没有试过在phpmyadmin中插入看看有没有提示(ini_set('mysql.trace_mode', 1))
  • 请准备好我的最后一次编辑,它可能会有所帮助。

标签: php mysql timestamp sql-insert


【解决方案1】:

您是否尝试过传递日期而不是秒数?

基本上,要么在 MySQL 上使用 FROM_UNIXTIME(1362134259),要么在 php 上使用 strtotime("Y-m-d H:i:s",1362134259)。

我对 codeigniter 不太熟悉,但我假设如下:

$data = array(
   'userid' => 428,
   'reset_requested_on' => date("Y-m-d H:i:s"),
   'valid_until' => date("Y-m-d H:i:s"),
   'sessionid' => 'b6d444e0ea14768a724308fd1aa64b6d'
);

应该可以完美运行。

时间戳和日期时间的主要区别在于数据在内部的保存方式。时间戳字段保存为自 Unix 纪元以来的秒数,存储为 32 位整数(因此它容易受到 y2k38 错误的影响),而日期时间字段以已知格式保存以表示日期。日期时间字段的数学运算比时间戳字段更昂贵,但从“客户”的角度来看,除非您使用的日期晚于 2038 年,否则它们基本相同。

因此,离开 PHP 并进入 MySQL 的查询应该具有预期格式的日期,例如“Y-m-d H:i:s”。

【讨论】:

  • 我得到 0000-00-00 00:00:00 插入
  • 我应该将 dable 中的文件更改为日期时间吗?
  • 老兄,只需将插入查询添加到您的问题中;)
  • 没那么容易。我使用 codeigniter,这意味着我必须从控制器发布代码,然后从模型发布代码,然后从 my_model 发布代码,因为模型扩展了 my_model....
  • 在我更改日期时间字段后它起作用了。我使用 $timestamp = date("Y-m-d H:i:s",now());现在插入工作正常。谢谢。
【解决方案2】:

您是否在插入时错过了时间戳的引号 (")?

"1362134259"

我不确定。试试这个方法。

$newdata = array('userid' => $data['userid'],
                 'reset_requested_on' => "$timestamp",
                 'valid_until' => "$new_timestamp",
                 'sessionid' => $this->session->userdata('session_id'));

【讨论】:

  • $newdata = array('userid' => $data['userid'], 'reset_requested_on' => $timestamp, 'valid_until' => $new_timestamp, 'sessionid' => $this- >session->userdata('session_id'));
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-11
  • 1970-01-01
  • 2016-03-06
  • 2012-01-29
  • 2013-02-17
  • 1970-01-01
相关资源
最近更新 更多