Php 时间戳字段值的问题
我对时间戳字段值有一些问题 我正在使用CodeIgniter2.1.3和PHP5。问题是,当尝试使用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'
$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生成的?让我们来看看。