我正在尝试插入我的数据库表。
我从列中收到此错误:
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']) . ")";
答案 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);