我在时间戳字段值方面遇到了一些问题。
我正在使用Codeigniter 2.1.3,使用PHP 5.问题是当尝试使用NULL
输入空(或$this->db->insert()
)数据时,DB会将值显示为{{1} }。
0000-00-00 00:00:00
当我检查DB的值时,它会显示<?php
$activities = array(
'activity_title' => $task['title'],
'note' => $task['description'],
'duration' => "00:15",
'created_date' => mysql_datetime(),
'scheduled_date' => $task['schedule_time'], // DB field type: 'timestamp' with 'NULL' as default
'owner_id' => $owner_id,
'assigned_to' => $assigned_to,
);
if (($assigned_to != '') && (isset($task['schedule_time'])) && ($task['schedule_time'] != '')) {
$userdtl = _DB_get_record($this->tables['users'], array('id' => $assigned_to));
date_default_timezone_set('UTC');
$originalTime = new DateTime($task['schedule_time']);
// Convert to User TimeZone.
$originalTime->setTimeZone(new DateTimeZone($userdtl['timezone']));
$activities['scheduled_date'] = $originalTime->format('Y-m-d H:i:s');
}
if (($activities['scheduled_date'] == '0000-00-00 00:00:00' || $activities['scheduled_date'] == '' || $activities['scheduled_date'] == 'NULL')) {
$activities['scheduled_date'] = NULL;
file_put_contents('./log.txt', print_r($activities['scheduled_date'], true), FILE_APPEND); // getting empty
}
// Insertion
$this->db->insert($this->tables['activities'], $activities);
// On print_r($this->db->last_query());
//INSERT INTO `activities` (`activity_title``, `note`, `duration`, `created_date`, `scheduled_date`, `owner_id`, `assigned_to`) VALUES ('Email 3', '<div>Email 3</div>', '00:15', '2017-07-21 05:55:52', NULL, '633', '633')
?>
。它应该是NULL,对吗?
我已直接在DB&amp;上检查了相同的插入查询它运作良好。
我不太了解有关服务器详情的信息。它在UTC时区的工作。
你对此有什么想法吗? 请帮忙......
答案 0 :(得分:0)
如果你的db列是默认的NULL,你可以尝试避免插入
尝试以下
if (($activities['scheduled_date'] == '0000-00-00 00:00:00' || $activities['scheduled_date'] == '' || $activities['scheduled_date'] == 'NULL')) {
unset($activities['scheduled_date']);
file_put_contents('./log.txt', print_r($activities['scheduled_date'], true), FILE_APPEND); // getting empty
}
这应该可以完成这项工作
问题可能是here,因为CI会保护您的查询 逃避正确的价值(虽然我不确定)
//编辑 - 发表评论后 尝试输出insert语句,因为我认为其他地方存在问题
试试这个并告诉我们您的声明
$this->db->insert($this->tables['activities'], $activities);
$strSql = $this->db->last_query();
echo $strSql;