在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 +“,”)
答案 0 :(得分:2)
就数据库结构和规范化而言,你没有一个良好的开端,那就是你的问题。
您应该将单独的注释作为单独的条目输入到注释表中,并附加一列时间。这样,您可以使用以下方式轻松按时间排序:
SELECT comments,time FROM comment WHERE RID = $ RID SORT BY time ASC
这将按时间顺序获取特定餐厅的评论(请先使用DESC获取最新评论)。
通过这种方式,您可以消除任何不必要的字符串操作 - 这总会导致错误和大量头痛。它还允许您使用MySQL的内置日期/时间格式,允许您只选择过去一周的评论等。