我试图使用两个sql插入查询插入两个表。第一个查询应插入到一个表中,如图所示,第二个第二个语句需要插入到第二个表中。但是,我需要第二个语句以某种方式知道在第一个查询中分配给记录的故事ID(SID)是什么。 SID是表“故事”中的主键和auto_increments,它是表格中的一个字段:写“
然后我想以某种方式(使用JOIN我假设)在写入表中填充SID,并将SID分配给第一个查询。但是代码将如何知道哪个是刚刚插入第一个查询中的记录来获取该SID?
// Get values from form
$category = $_POST['category'];
$genre = $_POST['genre'];
$story_name = $_POST['story_name'];
$text = $_POST['text'];
$query = "INSERT INTO stories (ID, category, genre, story_name, active) VALUES
('$user_ID', '$category', '$genre','$story_name', '1')";
$result = mysql_query($query);
$SID = mysql_insert_id();
$SID2 = "select stories.SID from stories where stories.SID=$SID";
$query2 = "INSERT INTO writing (ID, SID, text, position, approved)
VALUES('$user_ID', '$SID2', '$text', '1','N')";
$result = mysql_query($query2);
答案 0 :(得分:1)
在数据库调用之间使用mysql_insert_id()
。
$query = "INSERT INTO stories (ID, category, genre, story_name, active) VALUES
('$user_ID', '$category', '$genre','$story_name', '1')";
$result = mysql_query($query2);
$sid = mysql_insert_id(); // <-- GET ID
$query2 = "INSERT INTO writing (ID, SID, text, position, approved)
VALUES('$user_ID', '$sid', '$text', '1','N')"; // <-- you can now use $sid here
$result = mysql_query($query);
仅供参考,you shouldn't use mysql_*
functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。