我有以下表结构:
recid int(11)
userid int(11)
reset_requested_on timestamp CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
valid_until timestamp
sessionid varchar(255)
当我打印我的数组时,我有这些数据:
Array
(
[userid] => 428
[reset_requested_on] => 1361961459
[valid_until] => 1362134259
[sessionid] => b6d444e0ea14768a724308fd1aa64b6d
)
当我执行插入时,只插入recid,用户ID和sessionid,而timestamp字段为空。谁能告诉我我做错了什么?
编辑:
当我手动添加记录时,如果我在时间戳字段中选择FROM_UNIXTIME,我会正确插入记录。
任何人都知道如何将此选项设置为默认值?
的问候,卓然
答案 0 :(得分:0)
当你插入时,你错过了时间戳的引号(“)吗?
"1362134259"
我不确定。试试这种方式。
$newdata = array('userid' => $data['userid'],
'reset_requested_on' => "$timestamp",
'valid_until' => "$new_timestamp",
'sessionid' => $this->session->userdata('session_id'));
答案 1 :(得分:0)
你尝试过日期而不是秒吗?
基本上,要么在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错误影响),而datetime字段以已知格式保存以表示日期。对于日期时间字段,数学运算比时间戳字段更昂贵,但从“客户”的角度来看,除非您使用的日期晚于2038年,否则它们大多是相同的。
因此,离开PHP并进入MySQL的查询应该具有预期格式的日期,例如“Y-m-d H:i:s”。