我正在研究PHP/MySQL评级系统.对于用户能够评价用户必须登录.每个用户都有一个唯一的"UID".网站上会有多个评级实例(每个游戏一个,在我的情况下),我需要一种在MySQL行中存储UID列表的有效方法(评级系统的每个实例的评级表中有一个MySQL行) )保持一个谁投票的记录.
我在其他系统中看到列表存储在序列化的PHP数组中.每次用户投票时,序列化数组必须被提取,反序列化,插入新的UID,重新序列化数组,并且MySQL行是UPDATEd.每次加载页面时,必须再次对该列表进行反序列化并检查以查看查看该页面的用户是否已投票以确保用户未投票两次.
这似乎是低效和繁琐的.MySQL是否具有内置列表功能以帮助此过程更高效?有没有更聪明的方法可以解决这个问题?
我已经考虑过一种可能的替代方法,即忘记序列化并将UID存储在MySQL数据库的TEXT类型字段中.我会在每个UID之后附加一些非数字字符(比如句号[.]).要添加用户条目,我只需将UID连接到TEXT字段的末尾,然后连接句点.当检查用户是否已经投票时,我可以"SELECT*FROM table WHERE votes ='%$ UID.%';".这会更有效地工作还是有更优雅的方式完成工作?
关于表结构的后续帖子... 评级系统的高效MySQL表结构