我的更新列有问题,设置数据为NULL,我有一个表user
,每一列都是id_parent
列,用户可以删除父,可以添加父,所以如果{{ 1}}设置user
,parent
将设置为用户的id_parent
,但用户可以删除父项的数据,因此如果parent id
删除父项的数据,user
列,将设置为NULL。那么如何在数据库中将数据设置为空而不是id_parent
而是" "
。
这是我的NULL
表。
user
答案 0 :(得分:5)
使用它来设置null column.it将起作用,不要忘记在活动记录上的第三个参数SET上添加false
$this->db->set('id_parent', 'NULL', false);
答案 1 :(得分:4)
您可以在' model'中尝试此代码,希望它能够正常运行:
public function update_std_marks($id_user) {
$this->db->set('id_parent', null);
$this->db->where('id_user', $id_user);
$this->db->update('user');
}
答案 2 :(得分:2)
您的用户表必须在id_parent
字段中将属性设置为is_null。否则你不能。
查询应该类似于
Update table user set id_parent = null where id_user = X
您可以使用此查询将该列设置为可为空:
ALTER TABLE user MODIFY id_parent int(11) null;
尝试使用codeigniter:
$fields = array(
'id_parent' => array(
'name' => 'id_parent',
'type' => 'INT',
),
);
$this->dbforge->modify_column('user', $fields);
或简单地说:
$this->db->query('ALTER TABLE user MODIFY id_parent int(11) null;');
答案 3 :(得分:0)
我很好奇,所以我想看看CodeIgniter的Active Record在处理空值时如何处理语法的不同变化。我将为where()
和set()
方法调用绘制几个测试用例。
where()
个测试的电池:
->where('col', null) // `col` IS NULL
->where('col', null, false) // col IS NULL
->where('col', 'NULL') // `col` = 'NULL'
->where('col', 'NULL', false) // col = NULL
->where('col IS NULL') // `col` IS NULL
->where('col IS NULL', null) // `col` IS NULL
->where('col IS NULL', null, false) // col IS NULL
->where('col', 'IS NULL') // `col` 'IS NULL'
->where('col', 'IS NULL', false) // col = IS NULL
正确引用并形成:#1,#5,#6(推荐)
符合逻辑,但未引用:#2,#7(不推荐)
渲染语法不正确:#3,#4,#8,#9(请勿使用)
set()
个测试的电池:
->set('col', null) // `col` = NULL
->set('col', null, false) // col =
->set('col', 'NULL') // `col` = 'NULL'
->set('col', 'NULL', false) // col = NULL
->set('col IS NULL') // `col IS` `NULL` = ''
->set('col IS NULL', null) // `col IS` `NULL` = NULL
->set('col IS NULL', null, false) // col IS NULL =
->set('col', 'IS NULL') // `col` = 'IS NULL'
->set('col', 'IS NULL', false) // col = IS NULL
正确引用并形成:#1(推荐)
符合逻辑,但未引用:#4(不推荐)
渲染语法不正确:#2,#3,#5,#6,#7,#8,#9(请勿使用)