次のデータ モデルを持つ PostGreSQL データベースがあります。
CREATE TABLE staff (s_id serial UNIQUE, name, username, password, email)
CREATE TABLE institution (i_id serial UNIQUE, name);
CREATE TABLE isStaffOf (i_id, s_id); //foreign key references
ユーザーがフォームを送信すると、最初の 2 つのデータ テーブルに情報を書き込み、s_id と i_id の値を自動的に生成する PHP スクリプトがあります。すごい!
システムが s_id と i_id の両方を isStaffOf リレーションに書き込むようにするためにいくつかの PHP の変更を試してみました。PHPコードについては、以下を参照してください。
$name = $_POST["name"];
$username = $_POST["username"];
$password = $_POST["password"];
$email = $_POST["email"];
$institution = $_POST["institution"];
$conn = pg_connect("host=***** port=**** dbname=****** user=**** password=******");
$staffWrite = pg_query("INSERT INTO staff(name, username, password, email) VALUES ('$name', '$username', '$password', '$email')");
$instiWrite = pg_query("INSERT INTO institution(name) VALUES ('$institution')");
$instiFK=pg_query("SELECT i_id FROM institution WHERE name='$institution'");
$staffFK=pg_query("SELECT s_id FROM staff WHERE name='$username'");
$sql=("INSERT INTO isstaffof(i_id, s_id) VALUES ('$instiFK', '$staffFK')");
$result = pg_query($sql);
それは私が現時点で持っているスクリプトですが、機能していません。これを修正して、ユーザーがすべてのデータ テーブルを送信すると、データ テーブルがいっぱいになり、参照整合性が適用されるようにする方法についてのアイデアはありますか? 私はほとんどそこにいて、まだ物事を試していますが、役に立ちません。
エラーメッセージ:
ERROR: invalid input syntax for integer: "Resource id #4" LINE 1: INSERT INTO isstaffof(i_id, s_id) VALUES ('Resource id #4', ...
さらに説明が必要な場合はお知らせください。しかし、私が達成したいことは明確であり、多くのpg_query
電話をかけなくても達成できると確信しています。