我试图在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();
答案 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)
答案 3 :(得分:0)
$ id = mysql_insert_id();
在表中,id字段应为自动增量字段