-1

私は、ユーザーが投稿にコメントできる小さなソーシャルネットワークサイトを持っています。SQLを使用してユーザーが追加した友達に基づいてレコードを表示できます。ただし、各投稿に付けられたコメントは、投稿のすぐ下に表示されるようにしたいと思います。

投稿テーブル:

all_id(PK), name, comment, time, expand

コメント表:

post_id, name, comment, all_id(FK)

Facebookの機能を複製しようとしています。投稿にコメントして、そのすぐ下に投稿を表示します。複雑なSQL結合を使用してみましたが、データが表示されませんでした。

4

1 に答える 1

1

1 回のクエリで投稿とすべてのコメントを取得できますが、結果セットが予測できないほど大きくなる可能性があり、その場合、データベース、スクリプト、またはサーバーのメモリが使い果たされる可能性があります。しかし、そうしたい場合は、私に知らせてください。例を投稿できます。

または、2 つの別個のクエリを使用することもできます。1 つ目は投稿を取得し、2 つ目はその投稿に関連するすべてのコメントを取得します。PHP と mySQL を使用した例を次に示します。

// Connect to MySQL Database
$db = mysql_connect('my_host', 'my_username', 'my_password');
mysql_select_database('my_database', $db);
// Query for Posts from a specific user.
$grabPost = mysq_query("SELECT all_id, name, comment, time, expand FROM posts WHERE name = 'some_user_name'", $db);
// Iterate over each post
while($post = mysql_fetch_assoc($grabPost)) {
    print '<b>' . htmlentities($post['name']) . '</b> - <i>' . $post['time'] . '</i><br />';
    print htmlentities($post['comment']);
    print '<br />';
    // Query for Comments relating to this Post
    $grabComments = mysql_query("SELECT post_id, name, comment FROM comments WHERE all_id = " . $post['all_id'], $db);
    // Iterate over each comment
    while($comment = mysql_fetch_assoc($grabComments)) {
        print '<p><b>' . htmlentities($comment['name']) . '</b> Says: ' . htmlentities($comment['comment']) . '</p>';
    }
    print '<hr />';
}
于 2012-09-26T18:55:53.753 に答える