插入时获取MySQL ID


Get MySQL ID while inserting

我试图获得行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();

尝试与 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语句

并尝试像 那样更新你的update查询
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'")

当分配给$pind时,您在注释行中实际做错的是您期望mysql_query返回您的新id,但它实际返回的是一个资源,您必须使用mysql_fetch_rowmysql_fetch_家族的任何类似功能获得id。

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

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

另一方面,我不赞成你的设计持有你的url在数据库中,当你已经有你需要在数据库中的一切(即id),所以你应该只是前置"blogpost.php?Id ="到你选择那一行时得到的Id,你已经设置好了,你的这个url是完全不必要的。

哦,当人们说这是不赞成的时候,他们是对的,但是看起来你还在学习中,所以这可能比mysqli方法更容易掌握,所以你可以暂时坚持使用它,一旦你适应了就升级到mysqli。

希望有帮助。好运。

这个怎么样?

   $pind = mysql_insert_id();
http://php.net/manual/en/function.mysql-insert-id.php

$id = mysql_insert_id();

表id字段应该是auto increment字段