如何在codeigniter中使用列集NULL更新表

时间:2015-07-10 15:46:32

标签: php mysql codeigniter

我的更新列有问题,设置数据为NULL,我有一个表user,每一列都是id_parent列,用户可以删除父,可以添加父,所以如果{{ 1}}设置userparent将设置为用户的id_parent,但用户可以删除父项的数据,因此如果parent id删除父项的数据,user列,将设置为NULL。那么如何在数据库中将数据设置为空而不是id_parent而是" "。 这是我的NULL表。

user

4 个答案:

答案 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()个测试的电池:

  1. ->where('col', null)                  // `col` IS NULL
    
  2. ->where('col', null, false)           // col IS NULL
    
  3. ->where('col', 'NULL')                // `col` = 'NULL'
    
  4. ->where('col', 'NULL', false)         // col =  NULL
    
  5. ->where('col IS NULL')                // `col` IS NULL
    
  6. ->where('col IS NULL', null)          // `col` IS NULL
    
  7. ->where('col IS NULL', null, false)   // col IS NULL
    
  8. ->where('col', 'IS NULL')             // `col` 'IS NULL'
    
  9. ->where('col', 'IS NULL', false)      // col = IS NULL
    

正确引用并形成:#1,#5,#6(推荐
符合逻辑,但未引用:#2,#7(不推荐
渲染语法不正确:#3,#4,#8,#9(请勿使用


set()个测试的电池:

  1. ->set('col', null)                  // `col` = NULL
    
  2. ->set('col', null, false)           // col =
    
  3. ->set('col', 'NULL')                // `col` = 'NULL'
    
  4. ->set('col', 'NULL', false)         // col = NULL
    
  5. ->set('col IS NULL')                // `col IS` `NULL` = ''
    
  6. ->set('col IS NULL', null)          // `col IS` `NULL` = NULL
    
  7. ->set('col IS NULL', null, false)   // col IS NULL =
    
  8. ->set('col', 'IS NULL')             // `col` = 'IS NULL'
    
  9. ->set('col', 'IS NULL', false)      // col = IS NULL
    

正确引用并形成:#1(推荐
符合逻辑,但未引用:#4(不推荐
渲染语法不正确:#2,#3,#5,#6,#7,#8,#9(请勿使用