如果value为null,则CI将使用默认字段插入数据库

时间:2014-10-07 15:46:55

标签: php codeigniter

我正在尝试插入我的数据库表。

我从列中收到此错误:

Column 'allow_edit_time_due' cannot be null

但是,该列设置为默认值:' 0'

如果' allow_edit_time_due'如何才能插入我的表格?为null,以便该值是默认值?

查询:

$sql = "INSERT INTO `cal_tasks` (user_id, task, task_notes, task_type, allow_edit_time_due, task_time_due, user_created) VALUES (" . $this->db->escape($user_id) . ", " . $this->db->escape($data['task']) . ", " . @$this->db->escape($data['task_notes']) . ", " . @$this->db->escape($data['task_type']) . ", " . @$this->db->escape($data['allow_edit_time_due']) . ", " . $this->db->escape($data['task_time_due']) . ", " . @$this->db->escape($data['user_created']) . ")";

1 个答案:

答案 0 :(得分:0)

正如您所发现的,将NULL值传递给SQL会尝试使用NULL填充列,这会导致错误。

无论如何,使用活动记录有助于简化代码(如果可取的话)以解决此问题。所有值也将自动转义。

这是一个例子:

$cal_task = array(
    'user_id' => $user_id,
    'task' => $data['task'],
    'task_notes' => $data['task_notes'],
    'task_type' => $data['task_type'],
    'task_time_due' => $data['task_time_due'],
    'user_created' => $data['user_created']
);

// optional, default if null
if (isset($data['allow_edit_time_due']))
{
    $cal_task['allow_edit_time_due'] = $data['allow_edit_time_due'];
}

$this->db->insert('cal_tasks', $cal_task);