我试图获得行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_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()");
另一方面,我不赞成你的设计持有你的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字段