1

好的,伙计们,我在这里需要一点帮助!使用 PHP 和 mysql,我做了一个评论部分,用户可以添加评论。首先,页面基于 ItemID 并显示正确的项目。当他们添加评论时,我会使用他们的用户名和 ItemID 并将其作为 comment.username 和 messageailmentID 放入评论表中。所以页面显示正确,并且评论部分效果很好,除了我似乎无法正确获取 SQL 查询。我尝试了很多变化,但没有运气。我希望任何人在 ItemID 页面下发布的评论仅显示该 ItemID 下的评论(特别是 messageailmentID)。

我的查询范围,但这是我目前的查询范围:

SELECT `comment`.messageID, `comment`.message, `comment`.username, `comment`.messageailmentID, Items.ItemID
FROM `comment`, Items
WHERE varItemID = `comment`.messageailmentID

(使用dreamweaver,varItemID 基本上是$_GET['Items.ItemID'])

编辑:例如,用户单击一个项目,将他们带到 itemdetails.php?ItemID=8。当他们发表评论时,它会将 Items.ItemID 添加到 comment.messageailmentID 中。

表列的重要部分是:

项目:项目ID

评论:CommentID、消息、comment.username、messageailmentID(即页面ItemID)

varItemID 不是列,而是 $_GET['ItemID'],在此查询中甚至可能不需要它,因为它是在另一个查询中完成的。

4

3 回答 3

1

您的查询正在获取所有行。

你应该使用:

  • JOIN用于指定表之间关系的子句。
  • WHERE用于指定要获取哪些特定项目的子句。

尝试这个:

SELECT
    comment.messageID,
    comment.message,
    comment.username,
    comment.messageailmentID,
    Items.ItemID
FROM Items
LEFT JOIN comment
ON Items.ItemID = comment.messageailmentID
WHERE Items.ItemID = 42

使用左连接意味着即使没有评论它仍然会返回一行。如果您不想这样做,请使用 INNER JOIN。

于 2012-05-04T10:32:24.823 回答
0

谢谢你们帮我弄清楚自己的愚蠢!我使用的有效查询是:

SELECT `comment`.messageID, `comment`.message, `comment`.username
     , `comment`.ItemID, Items.ItemID
  FROM Items 
 INNER JOIN `comment` 
    ON Items.ItemID = `comment`.ItemID
 WHERE Items.ItemID = varItemID

varItemID是一个$_GET['ItemID']也。

于 2012-05-05T07:48:30.710 回答
0

尝试以下

SELECT comment.messageID, comment.message, comment.username, comment.messageailmentID, Items.ItemID

FROM comment, Items

WHERE Items.ItemID = comment.messageailmentID and Items.ItemID = ". $_GET['Items.ItemID']
于 2012-05-04T10:33:53.427 回答