我通常将数据数组解析为db obj,如下所示
$this->db->update('myTable', array('col1' => "foo", 'col2' => 'bar' ,'col3' => 'abc'), array('id' => $id));
有没有办法只更新具有空值的列?目前我必须首先运行查询然后循环。效率不高。
答案 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');