请帮我处理我的评论部分sql查询

时间:2012-05-04 10:27:54

标签: php mysql sql comments

好的,伙计们,我需要一点帮助!使用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。

表格列的重要部分是:

项目:ItemID

评论:CommentID,message,comment.username,messageailmentID(这是页面ItemID)

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

3 个答案:

答案 0 :(得分: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。

答案 1 :(得分: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']

答案 2 :(得分: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']