2012-09-04 50 views
1

我在将PostgreSQL数据库中的数据从表单写入多个数据表时遇到问题。PHP/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

任何人有什么想法?

回答

0

这将理想的评论,但我认为这威力有事情做:

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

+0

对不起,这只是这个提交表单中的一个类型,而不是实际的代码,我确实必须检查! – WebDevDanno

1

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

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