如何使用新信息更新数据库,但保留旧信息?
我的目标是有一个收藏夹按钮,点击它时会将项目ID添加到会员收藏列表中,这样他们就可以调用fav.php?fav = janedoe之类的东西,并列出他们的收藏列表。
我知道如何添加按钮并从数据库中获取项目ID我真的需要运行更新的mysql查询以及创建数据库列时的“类型”我认为。
行内的信息将如下所示
1,12,14,15,34,46,74
然后,如果成员想要添加项目98,它将更新为
1,12,14,15,34,46,74,98
将98添加到最后。
我意识到这是一种“你能为我做这个吗”的帖子,但我不知道从哪里开始。
答案 0 :(得分:2)
您应该创建一个名为“
”的新表 <强> MembersFavoritePage:
强>
MemberId
。PageId
。然后,只要用户将页面标记为收藏页面,就可以插入此表格。
答案 1 :(得分:1)
如果您想要维护字符串,可以在查询中执行此操作:
UPDATE `table`
SET `fav` = CONCAT(`fav`, ",98")
WHERE `id` = 1234;
或者在PHP中进行concat并使用它进行更新 - 即首先获取现有字符串 - 但这意味着有2个查询。
但@MahmoudGamal建议的单独表格最好。因为这很难从'删除'项目......你需要在PHP方面进行操作。
答案 2 :(得分:1)
您不应在单列中保存逗号分隔值。这违反了First normal form
检查以下答案以获得更广泛的解释:
Is storing a delimited list in a database column really that bad?
最好的方法是根据@Mahmoud Gamal的建议创建单独的表格,从长远来看易于维护。
答案 3 :(得分:-1)
如何创建一个表“favs”,您可以在其中存储ID以及将其添加到他的收藏夹中的用户?
ID | USER_ID
------------
5 | user_1
6 | user_1
8 | user_2
6 | user_2
select ID from favs where USER_ID = "user_1"
这将为user_1获取pages'id。
如果用户需要添加/删除收藏页,请记住您需要管理此表的插入/更新/删除。
更简单的解决方案可能是在用户的详细信息中包含favs pages字段
USER_ID| FAVS
-------|-----
user_1 | 5*6
user_2 | 8*6
通过使用此解决方案,您将能够轻松解析favs字段并获取有关页面的信息(在这种情况下,您只需要解析字符串)。
当您需要更新或删除用户favs'list中的任何页面时,您只需解析字符串,删除要删除的页面ID或将新页面附加到字符串。
在这种情况下,缺点是您将无法轻松找到收藏页面(您最终将使用LIKE构造)。