0

mySQL では、userID、restaurantID、およびコメントの列で構成されるコメントのテーブルがあります。

DROP TABLE IF EXISTS `comment`;
CREATE TABLE IF NOT EXISTS `comment` (
 `loginID` varchar(20) NOT NULL,
 `RID` int(11) NOT NULL,
 `comments` longtext NOT NULL,
 KEY `loginID` (`loginID`)
 KET 'RID' ('RID')
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

これが私がやりたいことです:

i)コメント欄にコメント + 現在時刻を保存したい。

Java では (comments = comments + newinput + currentime + ",") と言います。次に、PHP で $comment = $_POST['comments'] を変換します

ii)挿入するときは (Insert into comment (loginID,RID,comments) VALUES ('$loginID','$RID','$comment'));

そのため、コメント列は次のようなデータの長いリストで構成されています

(おいしい12:00:00、最悪の23:00:00、...)など。

iii)ユーザーIDとコメントと下部をリストしたGoogleマーケットのコメントと同様に、それらすべてを行ごとに表示したいと思います。

私の質問は:

1) コンマに従ってデータを個別に取得するにはどうすればよいですか? 内破または爆発?しかし、私はそれと混同しています..

2) when I (SELECT コメント FROM コメント WHERE RID = $RID); 多くのユーザー ID とそのコメント リストを取得します。投稿された時間に従ってそれらを並べ替え、ユーザーIDとコメントを最も早い時間から現在の時間まで出力できるように、それらをすべて分割するにはどうすればよいですか。

ロジック: (1 つのレストランに多くのユーザーがコメントでき、1 人のユーザーがそのレストランについて多くのコメントを残すことができます。)

このようなデータを保存することは適切ですか? (テキストの更新 = テキスト + 現在時刻 + ",")

4

1 に答える 1

2

データベースの構造と正規化に関する限り、良いスタートを切ることはできません。それが問題です。

コメントテーブルには、時間の列を追加して、個別のコメントを個別のエントリとして入力する必要があります。このように、次を使用して時間で簡単に並べ替えることができます。

SELECTコメント、時間FROMコメントWHERE RID = $ RIDSORTBY時間ASC

これにより、特定のレストランのコメントが時系列で取得されます(代わりにDESCを使用して、最新のコメントを最初に取得します)。

このようにして、不要な文字列操作を排除します。これは、常にバグや大きな頭痛の種になります。また、MySQLに組み込まれている日付/時刻形式を使用できるため、先週などのコメントのみを選択できます。

于 2013-03-17T03:41:08.783 に答える