插入时获取MySQL ID

时间:2013-06-07 07:04:54

标签: php mysql

我试图在slug之后获取行ID(例如,post 1返回“/bligpost.php?id=1”)。 相反,它不返回任何ID。 我在哪里做错了? (我已将其他尝试纳入评论中。)

mysql_connect("$hosty","$uname","$paswd");
@mysql_select_db($dbnme) or die( "Unable to select database");

$name=$_POST['Title'];
$slug="blogpost.php?id=";
$auth=$_POST['Author'];
$date=$_POST['Date'];
$cont=$_POST['Content'];

//$query = ("INSERT INTO Blogs (Name, URL, Content, Author, Date) VALUES ('$name', '$slug', '$cont', '$auth', '$date')");
mysql_query("INSERT INTO Blogs (id, Name, URL, Content, Author, Date) VALUES (NULL, '$name', '$slug', '$cont', '$auth', '$date')");
//$pind = mysql_query("SELECT LAST_INSERT_ID()");
mysql_query("UPDATE Blogs SET URL=blogpost.php?id=`id` WHIERE id=LAST_INSERT_ID()");
//mysql_query("UPDATE Blogs SET URL=blogpost.php?id=".$pind." WHERE Content=".$cont);
mysql_close();

4 个答案:

答案 0 :(得分:2)

尝试 mysql_insert_id (),如

mysql_query("INSERT INTO Blogs (id, Name, URL, Content, Author, Date) VALUES (NULL, '$name', '$slug', '$cont', '$auth', '$date')");
$id =  mysql_insert_id();
echo "My Last Inserted Id ".$id;

Tr this LINK并且不要使用mysql_ *函数,因为它们被删除,而不是使用mysqli_ *或PDO语句

并尝试更新您的更新查询,如

mysql_query("UPDATE Blogs SET URL = 'blogpost.php?id=$id' WHERE id=$id");

编辑根据您的评论查询尝试

mysql_query("UPDATE Blogs SET URL=blogpost.php?id=$pind WHERE Content='".$cont."'")

mysql_query("UPDATE Blogs SET URL=blogpost.php?id=$pind WHERE Content='$cont'")

答案 1 :(得分:1)

在分配给$pind时,您在注释行中实际上做错的是您希望mysql_query返回您的新ID,但它实际返回的是您必须从中获取的资源使用mysql_fetch_row或来自mysql_fetch_系列的任何类似功能的ID。

对于带有WHIERE id=LAST_INSERT_ID()的未注释行,它可能会有效,但您不会将前缀字符串与您的ID连接。你应该这样做:

mysql_query("UPDATE blogs SET url = CONCAT('blogpost.php?id=', id) WHERE id = LAST_INSERT_ID()");

另一方面,当你已经拥有数据库中所需的一切(即id)时,我不赞成你在数据库中保存你的url的设计,所以你应该只添加“blogpost.php?id =“对于你在选择那一行时获得的ID而且你已全部设定,你的这个网址是完全没必要的。

哦,当人们说这个被弃用时,人们是正确的,但似乎你还在学习,所以这可能比mysqli方法更容易掌握,所以你现在可以坚持下去,然后向上移动到mysqli你很舒服。

希望有所帮助。祝你好运。

答案 2 :(得分:0)

这个怎么样?

   $pind = mysql_insert_id();

http://php.net/manual/en/function.mysql-insert-id.php

答案 3 :(得分:0)

$ id = mysql_insert_id();

在表中,id字段应为自动增量字段