我有两个表,用户和评论。我需要在注释中将firstname和lastname添加到users并将注释添加到comments表中,并将用户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
,CONSTRAINTcomments_ibfk_2
FOREIGN KEY (useridfk
)参考users
(id
)ON更新级联更新 CASCADE)
我是php和phpmyadmin的新手,所以感谢任何帮助。
答案 0 :(得分: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 key。
注意:使用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);