1

我在将数据从表单写入 PostgreSQL 数据库上的多个数据表时遇到问题。

这是我的数据模型

CREATE TABLE institutions(i_id PK, name text, memberofstaff REFERENCES staff u_id);

CREATE TABLE staff(u_id PK, username text, password text, institution REFERENCES institutions i_id);

所以它是1:1的关系。这些表设置得很好。这是我遇到困难的 PHP 脚本。我正在使用 CTE-datamodifying 或至少尝试使用,但我在提交时不断收到错误。

PHP:

 $conn = pg_connect('database information filled out in code');

       $result = pg_query("WITH x AS (

       INSERT INTO staff(username, password, institution)

       VALUES('$username', '$password', nextval('institutions_i_id_seq'))

       RETURNING u_id, i_id)

       INSERT INTO institutions (i_id, name, memberofstaff)

       SELECT x.i_id, x.u_id, '$institution'

       FROM x");

       pg_close($conn);

这就是代码,我得到的错误是:

Warning: pg_query() [function.pg-query]: Query failed: ERROR: relation "institutions_i_id_seq" does not exist LINE 3: VALUES('AberLibrary01', '', nextval('institutions_i_id_se... ^ in DIRECTORY LISTING(I replaced this) on line 22

有人有什么想法吗?

4

2 回答 2

1

您是否真的创建了列类型为institutions.i_idstaff.u_id设置为的表serial?还是手动创建序列?

如果是前者,则无论如何都不需要显式使用nextval。如果是后者,请仔细检查序列名称。

于 2012-09-04T11:01:40.250 回答
0

理想情况下,这将是一条评论,但我认为它可能与以下内容有关:

$'password'这应该'$password'在该示例的第四行。

于 2012-09-04T10:58:52.967 回答