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)当我插入时,我正在做 (插入评论 (loginID,RID,comments) VALUES ('$loginID','$RID','$comment'));

所以现在评论列包含一长串数据,例如

(美味的 12:00:00,最糟糕的 23:00:00,...)等等。

iii)我想逐行显示所有这些,类似于列出用户 ID 和评论以及底部的谷歌市场评论。

我的问题是:

1)我应该如何根据逗号分别获取数据?内爆还是爆炸?但我对此感到困惑..

2) 当我 (SELECT comments FROM comment WHERE RID = $RID); 我会得到很多用户 ID 和他们的评论列表。我应该如何将它们全部分成几部分,以便我可以根据发布的时间对它们进行排序并打印从最早时间到当前时间的用户 ID 和评论。

逻辑:(1个餐厅可以被多个用户评论,1个用户可以对餐厅发表很多评论。)

我这样存储数据是否合适?(更新文本 = 文本 + 当前时间 + ",")

4

1 回答 1

2

就数据库结构和规范化而言,您的开端并不好,这就是您的问题所在。

您应该将单独的评论作为单独的条目输入到评论表中,并在时间上增加一列。这样,您可以使用以下方法轻松按时间排序:

SELECT comments, time FROM comment WHERE RID = $RID SORT BY time ASC

这将按时间顺序获取特定餐厅的评论(使用 DESC 代替首先获取最新评论)。

这样您就可以消除任何不必要的字符串操作——这总是会导致错误和令人头疼的问题。它还允许您使用 MySQL 的内置日期/时间格式,允许您仅选择过去一周的评论等。

于 2013-03-17T03:41:08.783 回答