我正在使用PostgreSQL&笨。数据库中有一个名为folio的表。它的列数也很少,包含remarks1, remarks2, remarks3
。当INSERT语句第一次执行时,将插入所有其他列的数据。
当我尝试在以下3列中执行以下UPDATE语句时,remarks1
列会正确更新。但remarks2, remarks3
列已更新为''
。
UPDATE "folio" SET "remarks1" = 'test remark', "remarks2" = '', "remarks3" = '' WHERE "id" = '51';
鉴于remarks1, remarks2, remarks3
列数据类型为character varying
。我正在使用Codeigniter活动记录。一次可以更新所有3列,否则可以根据用户输入更新单列。
可能是什么问题?我怎样才能解决这个问题?为什么使用''
更新列?
根据要求,CI中的php数组将在
之下$data = array(
'remark1' => $this->input->post('remark1'),
'remark2' => $this->input->post('remark1'),
'remark3' => $this->input->post('remark1')
);
保存数据的功能仅包含两行以下
$this->db->where('id', $folio_id);
$this->db->update('folio', $data);
答案 0 :(得分:1)
这些列已更新为''
,因为您告诉他们?
让我们仔细看看查询
UPDATE "folio"
SET
"remarks1" = 'test remark',
"remarks2" = '',
"remarks3" = ''
WHERE
"id" = '51';
首先,您选择表格folio
进行更新
然后,您告诉它使用新值更新remarks1
到remarks3
。对于remarks2
和remarks3
,您指定将它们设置为空字符串。这就是将要发生的事情
最后但同样重要的是,您告诉它仅将此更新应用于id
等于51
的行。
因此,为了仅更新remarks1
,您只需从更新中删除其他列:
UPDATE "folio"
SET
"remarks1" = 'test remark'
WHERE
"id" = '51';
<强>更新强>
我到目前为止还不是CI专家,但从我看到的情况来看,我将$data
数组更改为仅包含remark1
的信息:
$data = array(
'remark1' => $this->input->post('remark1')
);
并且(根据我的理解)它应该只更新这一列。