无法获取mysql_insert_id()方法来获取我需要的值

时间:2014-08-03 19:57:40

标签: php mysql

我正在尝试从插入中获取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);

3 个答案:

答案 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执行了一个插入查询(你还没有完成),那么会有一个值