0

スラッグの後に行 ID を取得しようとしています (例: 投稿 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

4 に答える 4

0

に割り当てるときにコメント行で実際に間違っているのは、が新しいIDを返す$pindことを期待していることですが、実際に返されるのは、ファミリからまたは同様の関数mysql_queryを使用してIDを取得する必要があるリソースです。mysql_fetch_rowmysql_fetch_

のコメント解除された行に関しては、WHIERE id=LAST_INSERT_ID()おそらく機能しますが、プレフィックス文字列をIDと連結していません。次のようにする必要があります。

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

一方、データベースに必要なもの (つまり id) がすべてある場合に、URL をデータベースに保持するという設計は承認しません。その行を選択したときに取得したIDとすべて設定されている場合、このURLは完全に不要です。

ああ、人々はこれが非推奨であると言うのは正しいですが、あなたはまだ学んでいるようですので、これはおそらく mysqli アプローチよりも少し理解しやすいので、今のところそれを続けて、いったん mysqli に移行することができます快適。

それが役立つことを願っています。幸運を。

于 2013-06-07T07:26:14.857 に答える
0

これはどう?

   $pind = mysql_insert_id();

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

于 2013-06-07T07:08:39.413 に答える
0

$id = mysql_insert_id();

テーブル ID フィールドでは、自動インクリメント フィールドである必要があります

于 2013-06-07T07:10:26.747 に答える