繁体   English   中英

PostgreSQL更新问题,带报价('')

[英]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
然后,您告诉它使用新值更新remarks1remarks3 对于remarks2remarks3您指定将它们设置为空字符串。 这就是将要发生的事情。
最后但并非最不重要的一点是,您告诉它仅将此更新应用于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM