当值存在时,活动记录省略插入

时间:2016-11-04 15:46:47

标签: php mysql codeigniter

我通常将数据数组解析为db obj,如下所示

$this->db->update('myTable', array('col1' => "foo", 'col2' => 'bar' ,'col3' => 'abc'), array('id' => $id));

有没有办法只更新具有空值的列?目前我必须首先运行查询然后循环。效率不高。

1 个答案:

答案 0 :(得分:0)

以下是几个解决方案:

$sql = 'UPDATE myTable SET col1 = IF(col1 IS NULL, ?, col1), col2 = IF(col2 IS NULL, ?, col2), col3 = IF(col3 IS NULL, ?, col3)';
$this->db->query($sql, ['foo', 'bar', 'abc']);

$this->db->set('col1', 'IF(col1 IS NULL, "foo", col1)', FALSE)
      ->set('col2', 'IF(col2 IS NULL, "bar", col2)', FALSE)
      ->set('col3', 'IF(col3 IS NULL, "abc", col3)', FALSE)
      ->update('myTable');