错误更新postgres表中的行

时间:2009-02-04 07:02:40

标签: sql postgresql

我的表是:

CREATE TABLE A(
    id serial NOT NULL,
    date timestamp without time zone,
    type text,
    sub_type text,
    filename text,
    filepath text,
    filesize integer,
);

我有一个更新例程:

$Query = "UPDATE A SET type=\"" . $strType . "\" where id=" . intval($ID);

问题:

当$ strType是一个字符串时,就像“生菜”一样,我收到了这个错误:

ERROR:  column "lettuce" does not exist

当它是int时,没有错误。

想法?

更多背景资料:

  • 插入代码成功添加文件名,文件路径,两种文本类型

2 个答案:

答案 0 :(得分:4)

在SQL中,双引号是标识符分隔符。您的UPDATE语句正在尝试将type列设置为"lettuce"列的值,如果没有名为lettuce的列,则会出错。

您希望使用单引号在SQL中分隔字符串文字:

$Query = "UPDATE A SET type='" . $strType . "' where id=" . intval($ID);

另请参阅“Do different databases use different name quote?

答案 1 :(得分:3)

您的编码对SQL注入是开放的。使用占位符(可能是不带引号的问号)并单独传递值。这避免了XKCD的问题。

比尔可以解答您关于列名与字符串的直接问题。