1

我正在尝试根据新用户的输入更新我的日历标题。

变量如下:

$titleNew = 'New Title'
$titleOld = 'Old Title'

旧标题存在于数据库中,应相应更新,但使用此代码时,我收到一条错误消息,提示我准备好的语句不存在。

$result = pg_prepare($conn, "update", "UPDATE calendar SET title = $1 WHERE title LIKE $2");

$result = pg_execute($conn, "update", array($titleNew, $titleOld));
4

1 回答 1

2

要查明该表是否calendar实际存在于您所连接的数据库中,请在同一会话中运行:

SELECT n.nspname As schema_name, c.relname As tbl_name
FROM   pg_class c
JOIN   pg_namespace n ON n.oid = c.relnamespace
WHERE  c.relname ILIKE 'calendar';

我怀疑根本问题是与表名或连接参数混淆。您可能有:

  • 混淆了数据库。
  • 混淆了港口。
  • search_path不包括表所在架构的设置。检查您的 search_path :是否SHOW search_path;
    包含架构名称?
  • 表名拼写错误。
  • 将双引号混合"Calendar"大小写名称与(通常更可取的)小写名称混淆calendar

如果您的 : 中没有实际的模式,请正确search_path设置search_path模式限定表名:

UPDATE calendar.calendar SET title = $1 WHERE title = $2
于 2013-06-03T18:39:49.347 回答