PHP / PostgreSQL数据库编写问题

时间:2012-09-04 10:54:49

标签: php postgresql

我在将表格中的数据写入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数据修改或至少尝试但我在提交时一直收到错误。

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

有人有任何想法吗?

2 个答案:

答案 0 :(得分:1)

您是否实际创建了表格institutions.i_idstaff.u_id设置为serial的表格?或者手动创建序列?

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

答案 1 :(得分:0)

理想情况下这应该是评论,但我认为可能与之相关:

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