如何通过TIME检索longText和SORT以相应地回显它们

时间:2013-03-17 03:25:49

标签: php mysql

在mySQL中,我有一个由userID,restaurantID和comments列组成的评论表:

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,评论)VALUES('$ loginID','$ RID','$ comment'));

所以现在注释列包含一长串数据,如

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

iii)我想逐行显示所有这些内容,与谷歌市场评论相似,其中列出了用户ID和评论以及底部。

我的问题是:

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

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

逻辑:(1餐厅可以由许多用户评论,1位用户可以留下关于餐厅的许多评论。)

我这样存储数据是否合适? (更新text = text + currenttime +“,”)

1 个答案:

答案 0 :(得分:2)

就数据库结构和规范化而言,你没有一个良好的开端,那就是你的问题。

您应该将单独的注释作为单独的条目输入到注释表中,并附加一列时间。这样,您可以使用以下方式轻松按时间排序:

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

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

通过这种方式,您可以消除任何不必要的字符串操作 - 这总会导致错误和大量头痛。它还允许您使用MySQL的内置日期/时间格式,允许您只选择过去一周的评论等。