[英]PostgreSQL Update Issue With Quotation('')
我正在使用PostgreSQL和Codeigniter。 数据库中有一个名为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);
这些列更新为''
因为您告诉他们?
让我们仔细看一下查询
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')
);
并且(据我了解),它仅应更新此单列。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.