0

ユーザーとコメントの 2 つのテーブルがあります。ファーストネームとラストネームをユーザーに追加し、ユーザー ID をコメントの外部キーとしてコメント テーブルにコメントを追加する必要があります。phpmyadmin を使用して、外部キーの制約と関係を追加しています。

これは私のhtmlフォームです:

<form action="dbconnect.php" method="post">
Firstname: <input type="text" name="firstname"><br />
Lastname: <input type="text" name="lastname"><br />
Comments: <textarea cols="30" rows="5" name="comments"></textarea><br />
<input type="submit">
</form>

これは私のphp挿入コードです:

mysql_select_db("test", $db_server);

$sql="INSERT INTO users (Firstname, Lastname)
VALUES
('$_POST[firstname]','$_POST[lastname]')";

$sql="INSERT INTO comments (Comment)
VALUES
('$_POST[comments]')";


if (!mysql_query($sql,$db_server))
    {
    die('Error' . mysql_error());   
    }
echo "1 record added" ;

mysql_close($db_server);

これは私が得ているエラーです:

エラー: 子行を追加または更新できません: 外部キー制約が失敗しました ( test. comments, CONSTRAINT comments_ibfk_2FOREIGN KEY ( useridfk) REFERENCES users( id) ON DELETE CASCADE ON UPDATE CASCADE)

私はphpとphpmyadminが初めてなので、助けていただければ幸いです。

4

1 に答える 1

2

まず、users テーブルで INSERT クエリを実行して、ユーザー レコードを作成する必要があります。

mysql_select_db("test", $db_server);

$sql="INSERT INTO users (Firstname, Lastname)
VALUES
('$_POST[firstname]','$_POST[lastname]')";

mysql_query($sql);

if (!mysql_query($sql,$db_server))
    {
    die('Error' . mysql_error());   
    }
echo "1 record added" ;

次に、users テーブルで新しく作成されたレコードの ID を取得する必要があります

$newIdQuery = mysql_query("SELECT LAST_INSERT_ID() AS userId FROM users");
$newId = mysql_fetch_assoc($newIdQuery);

次に、その userId を使用してコメントを追加し、ユーザー ID foriegn キーを適切に設定します。

注: mysql_* 関数を使用して MySQL クエリを作成する場合、php 変数を { } でラップすると、php 変数の値が SQL ステートメントに挿入されます。

$sql="INSERT INTO comments (id, Comment)
VALUES
({$newId["userId"]}, '$_POST[comments]')";


if (!mysql_query($sql,$db_server))
    {
    die('Error' . mysql_error());   
    }
echo "1 record added" ;

mysql_close($db_server);
于 2012-10-22T23:49:52.600 に答える