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

左結合を使用すると、コメントがなくても 1 行が返されます。これが不要な場合は、INNER JOIN を使用してください。

于 2012-05-04T10:32:24.823 に答える
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 に答える
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 に答える