在多个表中添加记录PHP MYSQL

时间:2012-10-22 23:41:27

标签: php mysql phpmyadmin

我有两个表,用户和评论。我需要在注释中将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);

这是我得到的错误:

  

错误:无法添加或更新子行:外键约束失败   (testcomments,CONSTRAINT comments_ibfk_2 FOREIGN KEY   (useridfk)参考usersid)ON更新级联更新   CASCADE)

我是php和phpmyadmin的新手,所以感谢任何帮助。

1 个答案:

答案 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);