如何为用户发布的问题提供唯一的网址/ ID?

时间:2010-08-04 19:21:25

标签: php mysql

有一个名为discussion.php的表单,其中用户将填写他/她的问题/讨论并将post填写为savedisc.php。有些savedisc.php看起来像这样:

$message = $_POST['message'];
$title = $_POST['title'];
$represents = $_POST['represents'];

//connect to database

//save the content of discussion/question into the database for future use
$sql="INSERT INTO Discussion (Message, Title, Type)
VALUES
('$message','$title','$represents')";

//Display user's question/discussion again
echo $message . "<br />";
echo $title . "<br />";
echo $represents . "<br />";

上面没有显示,但是我手动保存id字段,即通过phpmyadmin作为自动增量和主键。因此,表Discussion中的所有值都有自己唯一的id。保存问题/讨论后,我希望能够在$title上显示每个问题的wb.php作为链接,现在看起来像这样(来自wb.php的一些代码) :

$result = mysql_query("SELECT * FROM Discussion ORDER BY id DESC");

//When user clicks the question/discussion Title, he/she will be directed to wbcomm.php
while($row = mysql_fetch_array($result))
  {
  echo "<a href='wbcomm.php' >{$row['Title']}</a><br />";
  }

直到这里,一切顺利。但是,从现在开始,我要做的是,当用户通过上面的代码点击问题/讨论标题时,我希望他/她被定向到wbcomm.php?id=1,其中id=1代表问题/讨论的唯一ID。 wbcomm.php中的部分代码如下:

if (isset($_GET['id']))
{
//connect to db

$wbid  = mysql_real_escape_string($_GET['id']);
    $sql = "SELECT * FROM Discussion WHERE id = '$wbid' LIMIT 1";
    $res = mysql_query($sql);
    if (mysql_num_rows() > 0) {
        $discussion = mysql_fetch_object($res);
        //display member's question here:
  echo $discussion['id'] . "<br />";
  echo $discussion['Title'] . "<br />";
  echo $discussion['Type'] . "<br />";
  echo $discussion['Message'] . "<br />";
    }
    else {
        // discussion does not exist with ID
    }
}

但是,由于某种原因,结果是空白的。即问题/讨论甚至没有出现。我究竟做错了什么?我的手术是否正确?

谢谢。

3 个答案:

答案 0 :(得分:2)

wb.php中,您创建了一个指向wbcomm.php的链接,但您没有传递讨论的ID,因此您的$wbid将为空。您需要将ID与链接一起传递,如下所示:

while($row = mysql_fetch_array($result))
  {
  echo "<a href='wbcomm.php?id={$row['id']}' >{$row['Title']}</a><br />";
  }

答案 1 :(得分:0)

您的ID列是自动增量int类型,因此您无需将其放在引号中或对其进行转义。你应该测试它,看看它是否是数字。

答案 2 :(得分:0)

使用此SQL mysql_num_rows($res) > 0