我有两个表,用户和评论。我需要向用户添加名字和姓氏,并在注释中将用户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_2foreign (useridfk)引用users(id)在更新级联上的删除级联)
我是新的php和phpmyadmin,所以任何帮助都是非常感谢的。
发布于 2012-10-22 23:49:52
首先,您需要在user表上运行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" ;然后,您需要检索用户表上新创建的记录的id。
$newIdQuery = mysql_query("SELECT LAST_INSERT_ID() AS userId FROM users");
$newId = mysql_fetch_assoc($newIdQuery);然后,您可以使用该userId添加注释,并适当填充用户id foriegn键。
注意:当使用MySQL函数构建mysql_*查询时,如果在{}中包装一个php变量,它将把php变量的值插入到mysql_*语句中。
$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);https://stackoverflow.com/questions/13021571
复制相似问题