我正在尝试从插入中获取SID到第一个表(故事)中,因此我可以将该SID插入到第二个插入的写入表中。
我认为执行此操作的方法是在第一次查询后使用mysql_insert_id();
,但自动递增的主键称为SID。如果mysql_insert_id()
可以获得该值,我将全部设置。
我从var_dump中发现的是$SID = mysql_insert_id();
只是返回value "0"
,我不知道为什么。
在商店中有一个名为ID的列,但如果它正在抓取,则值为"1"
。不管怎样,我希望这个方法可以写成mysql_insert_SID();
知道我做错了什么或者我怎么解决这个问题?是的,我知道这是一种弃用的方法,但首先我想弄清楚在我担心转换为PDO之前的情况。
// 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 :(得分:3)
检索上一个查询(通常是INSERT)为AUTO_INCREMENT列生成的ID。
(http://php.net/manual/en/function.mysql-insert-id.php)
但您没有执行任何查询(通过mysql_query()
)。您只是将查询分配给变量。请尝试以下方法:
$query = "INSERT INTO stories (ID, category, genre, story_name, active) VALUES
('$user_ID', '$category', '$genre','$story_name', '1')";
mysql_query($query);
$SID = mysql_insert_id();
答案 1 :(得分:0)
我认为您最有可能忘记执行查询? 尝试
$SID = mysql_insert_id();
执行查询后
$query = "INSERT INTO stories (ID, category, genre, story_name, active) VALUES
('$user_ID', '$category', '$genre','$story_name', '1')";
$result = mysql_query($query); // executing
$SID = mysql_insert_id(); // order of queries is important
答案 2 :(得分:0)
如果您无法通过mysql_insert_id()获取值,请尝试SELECT LAST_INSERT_ID()
。当然,如果你用AUTOINCREMENT执行了一个插入查询(你还没有完成),那么会有一个值