1

我正在尝试使用 PHP 和 MySQL 制作评论系统。我制作了一个名为“comment”的表,其中存储了详细信息

编号 | 日期 |product_id | 用户名 | email_id | 评论
    | | | | |
1 |2013-05-07 | 10001 | 贾邦 | jabong@jabong.com | 这是好产品
2 |2013-05-07 | 10001 | 约翰 | john@gmail.com | 我买了这个产品

等等


现在我想选择并打印所有那些 product_id=10001 的行。我正在使用以下代码打印详细信息

  $comment="";
  $id=$_GET['id'];//this is the product_id which is taken from URL
  $query=mysql_query("SELECT * FROM comment WHERE product_id='$id'");
  while($data = mysql_fetch_array($query))
    {
        $name = $data["user_name"];
        $email = $data["email_id"];
        $comment = $data["comment"];
        $date=strftime("%d %b, %Y", strtotime($data["date"]));

        $comment.='<table>
                      <tr>
                        <td>Date: '.$date.'</td>
                      </tr>
                      <tr>
                        <td>Name: '.$name.'</td>
                      </tr>
                      <tr>
                        <td>Email_id: '.$email.'</td>
                      </tr>
                      <tr>
                        <td>Product Review: '.$comment.'</td>
                      </tr>
                    </table><hr />'; 

然后我在正文部分呼应它们。但我只得到一个结果。所以请帮助我获得正确的代码。

4

3 回答 3

1

我的代码有一个小问题。我两次使用相同的变量,也没有使用连接符号。不过现在解决了——

      $review="";
      if (isset($_GET['id']))
  {
      $id=mysql_real_escape_string(trim($_GET['id']));
      $query=mysql_query("SELECT * FROM comment WHERE product_id='$id'");
      $review.='<table width="70%" cellpadding="6px" cellspacing="0" >';
      while($data=mysql_fetch_array($query))
        {
            $name = $data["user_name"];
            $email = $data["email_id"];
            $comment = $data["comment"];
            $date=strftime("%d %b, %Y", strtotime($data["date"]));
            $review.='<tr>
                        <td>
                          <table width="100%" border="0" style="border:1px solid; border-color:#05fdee; background-color:#e4f2f1;">
                              <tr>
                                <td rowspan="2" width="100px"> <img src="profile.png" /> </td>
                                <td align="left"><b> '.$name.' </b> says -</td>
                                <td align="right"><b> '.$date.' </b></td>
                              </tr>
                              <tr>
                                <td colspan="2">'.$comment.'</td>
                              </tr>
                          </table>
                        </td>
                      </tr>';

        }// while loop ends here
        $review.='</table>'; 
  } 
于 2013-12-02T12:25:37.033 回答
0

首先最重要的事情,清理你的数据。

$id=mysql_real_escape_string(trim($_GET['id']));
$query=mysql_query("SELECT * FROM comment WHERE product_id='$id'");

而($data = mysql_fetch_array($query))

第二个问题是您在每个循环中都覆盖了变量 $comment,因此即使您循环了两次,您也只会获得 1 条记录。

remove this: $comment = $data["comment"];
change this: <td>Product Review: '.$comment.'</td>
to this: <td>Product Review: '.$data["comment"].'</td>
于 2013-05-07T16:11:14.873 回答
0

你有这一行:

$comment = $data["comment"];

这是覆盖这个:

$comment.='<table>
                      <tr>
                        <td>Date: '.$date.'</td>
                      </tr>
                      <tr>
                        <td>Name: '.$name.'</td>
                      </tr>
                      <tr>
                        <td>Email_id: '.$email.'</td>
                      </tr>
                      <tr>
                        <td>Product Review: '.$comment.'</td>
                      </tr>
                    </table><hr />'; 

所以当你制作echo $comment它时,它会显示最后一个。

更改变量并完成

就像是:

 $comment_sql = $data["comment"];
....
    $comment.='<table>
                          <tr>
                            <td>Date: '.$date.'</td>
                          </tr>
                          <tr>
                            <td>Name: '.$name.'</td>
                          </tr>
                          <tr>
                            <td>Email_id: '.$email.'</td>
                          </tr>
                          <tr>
                            <td>Product Review: '.$comment_sql.'</td>
                          </tr>
                        </table><hr />'; 
...
于 2013-05-07T16:12:24.187 回答