使用两个单独的查询向两个表中插入数据


Inserting into two tables using two separate queries

我试图使用两个sql插入查询插入到两个表。第一个查询应该插入到一个表中,如图所示,第二个第二个语句需要插入到第二个表中。然而,我需要第二个语句以某种方式知道在第一个查询中分配给记录的故事ID (SID)是什么。SID是表"stories"中的主键和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);

在数据库调用之间使用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);

供参考,你不应该在新代码中使用mysql_*函数。它们不再被维护,并被正式弃用。看到那个红框了吗?学习预处理语句,并使用PDO或MySQLi——本文将帮助您决定使用哪一种。如果你选择PDO,这里有一个很好的教程。