0

ユーザーが来て、他のプロファイルにコメントできるプロジェクト用の MySQL データベースを作成したいと考えています。すべてのプロファイルには、それを識別するための一意の ID があります。ユーザーが来て他のプロファイルにコメントするとき、コメントを作成した人のユーザー ID と、コメントが作成されたプロファイルの人のユーザー ID を保存する必要があります。コメントをデータベースに保存する必要があります。

多くのユーザーが 1 つのプロファイルにコメントできるため、すべてのコメントとコメントを作成したユーザーを 1 つのプロファイルに保存する必要があります。このために、いくつのテーブルを作成する必要があり、それらにはいくつの列が必要ですか? このために、名前付きの user_comments のテーブルを作成することを考えています。これには、 column user_id, commenter_id(カンマで区切られた ID にコメントしたすべてのコメント投稿者)、コメント (カンマで区切られたすべてのユーザー コメント) があります。

これは機能しますか?

4

2 に答える 2

6

このために、user_comments という名前のテーブルを作成することを考えています。このテーブルには、列 user_id 、commenter_id (コンマで区切られた ID にコメントしたすべてのコメント投稿者)、comments (次に、すべてのユーザー コメントがコンマで区切られています)

いいえ!_ あなたはもうすぐそこにいます:

Table comments
id           INT AUTO_INCREMENT
recipient_id
sender_id
message      TEXT
[ sent       DATETIME ]
[ other meta data ]

に1 つのメッセージを格納しますmessageメッセージごとに1 行を作成します。何かで区切られた同じフィールドに複数のレコードを保存しないでください。

于 2013-05-29T18:37:36.723 に答える
1

私はprofile_commentテーブルを持っているでしょう:

id, text, profile_user_id, commenter_user_id, created_at

そしてuserテーブル:

id, name, email

ここで、最初のテーブルにはユーザー テーブルへの 2 つの外部キーがあることがわかります。1 つはプロファイルの所有者を指し、もう 1 つはコメントの所有者を指します。created_atブログと同じように順方向または逆方向に並べ替えることができます。

これで、プロファイル ページをレンダリングするときにid、クエリ文字列からプロファイルを取得できます。

$profileId = isset( $_GET['profile_id'] ) ? $_GET['profile_id'] : null;

そこから、それを SQL クエリに追加できます。

SELECT * FROM profile_comment
WHERE profile_user_id = :profile_id
ORDER BY created_at

ここでのコロン マークは、パラメーター化されたクエリで使用できるプレースホルダーであり、SQL インジェクションから保護するのに役立ちます。ただし、ステートメントに挿入するユーザー入力を慎重に除去する場合は、ステートメントを文字列として作成できます

于 2013-05-29T18:43:14.077 に答える