gpt4 book ai didi

php - 时间戳字段值的问题

转载 作者:行者123 更新时间:2023-11-29 18:36:43 25 4
gpt4 key购买 nike

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

我正在使用 Codeigniter 2.1.3 和 PHP 5。问题是当尝试使用 $this->db->insert( 输入空(或 NULL)数据时),DB 显示该值为 0000-00-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')

?>

当我检查数据库中的值时,它显示0000-00-00 00:00:00。应该是NULL吧?我直接在数据库上检查了相同的插入查询,效果很好。

我不知道更多有关服务器详细信息及其在 UTC 时区的工作情况。

数据库列为: enter image description here

索引为: enter image description here

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

最佳答案

如果您的数据库列默认为 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
}

这应该可以完成工作

Maybe the problem is here because CI protects your query by escaping the proper values (although i'm not sure)

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

尝试一下并向我们展示您的声明

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

关于php - 时间戳字段值的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45232138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com