0

我有两个表,用户和评论。我需要将名字和姓氏添加到用户,并将评论添加到评论表中,用户 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 回答