【问题标题】:PostgreSQL Update Issue With Quotation('')PostgreSQL 更新问题与引用('')
【发布时间】:2013-10-15 12:21:43
【问题描述】:

我正在使用 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" = 'moreinfo', "remarks3" = 'minfopart2' WHERE "id" = '51'; ???
  • ` WHERE "id" = '51';` 是id char 还是 varchar 列?如果不是:删除引号:WHERE "Id" = 51(顺便说一句:你前世接触过 mysql 吗?)
  • 它是由 CI 生成的 :-(

标签: php sql codeigniter postgresql sql-update


【解决方案1】:

这些列已更新为'',因为您告诉他们这样做?
让我们仔细看看查询

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')
);

而且(据我了解)它应该只更新这一列。

【讨论】:

  • 为什么会像 MySQL 一样用空白更新?我没有在这里添加''。它由 Codeigniter 完成。
  • @Dasun 大多数符合 SQL 的数据库系统会在您告诉它们时将值设置为空字符串。这是常见的预期行为。但我不确定如何告诉 codeigniter 只更新一列。
  • @Dasun - 如果您需要有关 CodeIgniter 代码的帮助,您需要展示其中的一些内容。您发布了 SQL,这就是人们为您提供帮助的原因。
  • 请查看更新后的问题并告诉我哪里出错了
  • @Dasun 我已经用关于 CI 问题的想法更新了我的答案。
猜你喜欢
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
  • 2012-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多