Php 时间戳字段值的问题

Php 时间戳字段值的问题,php,mysql,codeigniter,timestamp,codeigniter-2,Php,Mysql,Codeigniter,Timestamp,Codeigniter 2,我对时间戳字段值有一些问题 我正在使用CodeIgniter2.1.3和PHP5。问题是,当尝试使用$this->db->insert()输入空(或NULL)数据时,db将值显示为0000-00-00:00:00 <?php $activities = array( 'activity_title' => $task['title'], 'note' => $task['description'], 'duration'

我对时间戳字段值有一些问题

我正在使用CodeIgniter2.1.3和PHP5。问题是,当尝试使用
$this->db->insert()
输入空(或
NULL
)数据时,db将值显示为
0000-00-00:00:00

<?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')

?>

当我检查DB的值时,它显示
0000-00-00:00:00
。它应该是空的,对吗? 我直接在DB上检查了相同的插入查询&它工作得很好

我不知道更多关于服务器的详细信息&它在UTC时区的工作情况

DB列显示为:

索引为:

你对此有什么想法吗?
请帮助…

如果您的db列默认为空,您可以尝试避免插入

试试下面的方法

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
}
这应该能很好地完成任务

问题可能是因为CI通过 转义正确的值(尽管我不确定)

//编辑-在您的评论之后 尝试输出insert语句,因为我认为其他地方有问题

请试试这个,让我们看看你的陈述

$this->db->insert($this->tables['activities'], $activities);
$strSql = $this->db->last_query();
echo $strSql;

在投票否决之前,请说明你为什么这样做?伸出援助之手。您的DB列是否有
notnull
约束?我将添加列的DB屏幕截图。所以你可以看到,你看过吗?看来它能帮上忙。泰,就是这样。我已经检查了它,但在我的代码中我已经将其设置为
NULL
。抱歉,字段类型是
时间戳
您的意思是在
取消设置
字段打印
$this->db->last_query()
之后?我认为这个问题是因为索引问题,我不确定。因为我在两个不同的服务器上有相同的代码(一个用于开发,另一个用于Live)。在开发中工作正常&没有索引。我已经在我的问题中添加了:
插入到
活动中(
activity\u title`,
注释
持续时间
创建日期
计划日期
所有者id
分配给
)值('Email 3','Email 3','00:15','2017-07-21 05:55:52',NULL,'633','633')
这是由Codeigniter生成的?让我们来看看。