时间戳字段值的问题

时间:2017-07-21 07:55:57

标签: php mysql codeigniter timestamp codeigniter-2

我在时间戳字段值方面遇到了一些问题。

我正在使用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时区的工作。

DB列为: enter image description here

指数为: enter image description here

你对此有什么想法吗? 请帮忙......

1 个答案:

答案 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;