0

表「posts」には、記事と、各記事にコメントを投稿した人の最後の3つのユーザーID(us1、us2、us3)が含まれています。最後のコメント投稿者の名前を取得するには、「usertable」に参加する必要があります。これは私の質問です:

$result = mysql_query("SELECT m.id, m.comment, m.us1, m.us2, m.us3,p.name,o.name,t.name,
FROM posts m 
LEFT JOIN usertable p ON m.us1=u.id
LEFT JOIN usertable o ON m.us2=u.id
LEFT JOIN usertable t ON m.us3=u.id   

where m.lid = '$pid' order by m.id desc limit 0,20")  or die('Error');

while(list($id, $comment, $us1, $us2, $us3, $name1, $name2, $name3) = mysql_fetch_row($result)) {
echo "$id<br />";
}

残念ながら、この結果の「エコー」は次のとおりです。

79
79
79
79
79...

「79」は「posts」テーブルの最後の行のIDです。では、なぜこのクエリの結果が「投稿」から選択された1行だけになるのでしょうか。

4

1 に答える 1

0

この図にテーブル「U」がない場合、SQLが「u.id」を参照することに問題があります。試す:

SELECT m.id, m.comment, m.us1, m.us2, m.us3, p.name, o.name, t.name
FROM posts m 
LEFT JOIN usertable p ON m.us1=p.id
LEFT JOIN usertable o ON m.us2=o.id
LEFT JOIN usertable t ON m.us3=t.id

また、mysql拡張機能は非推奨になり、まもなく削除されるため、mysql_ではなくmysqli_*関数に切り替えてください。PDOも一見の価値があります。php.netでそれらの両方をチェックしてください。

于 2013-03-13T09:46:30.720 に答える