Php 用新信息更新数据库,但保留旧信息
如何使用新信息更新数据库,同时保留旧信息 我的目标是创建一个favorites按钮,当点击它时,它会将项目id添加到成员的favorites列表中,这样他们就可以调用fav.php?fav=janedoe之类的东西,并列出他们的favorites列表 我知道如何添加按钮并从数据库中获取条目id,我只需要运行mysql查询来更新,以及创建数据库列时的“类型” 行中的信息将如下所示Php 用新信息更新数据库,但保留旧信息,php,mysql,sql,database-design,Php,Mysql,Sql,Database Design,如何使用新信息更新数据库,同时保留旧信息 我的目标是创建一个favorites按钮,当点击它时,它会将项目id添加到成员的favorites列表中,这样他们就可以调用fav.php?fav=janedoe之类的东西,并列出他们的favorites列表 我知道如何添加按钮并从数据库中获取条目id,我只需要运行mysql查询来更新,以及创建数据库列时的“类型” 行中的信息将如下所示 1,12,14,15,34,46,74 然后,若成员想要添加项目98,它将更新为 1,12,14,15,34,46,7
1,12,14,15,34,46,74
然后,若成员想要添加项目98,它将更新为
1,12,14,15,34,46,74,98
最后加98
我意识到这是一篇“你能为我做这件事吗”的帖子,但我只是不知道从哪里开始。你应该创建一个新表,名为:
成员验证页面:
MemberId
PageId
然后,每当用户将一个页面标记为最喜爱的页面时,都要在此表中插入一个内容。您应该创建一个名为以下内容的新表:
成员验证页面:
MemberId
PageId
然后,每当用户将一个页面标记为最喜爱的页面时,都要在此表中插入一个内容。如果要维护字符串,可以在查询中执行以下操作:
UPDATE `table`
SET `fav` = CONCAT(`fav`, ",98")
WHERE `id` = 1234;
或者在PHP中执行concat并使用它进行更新-即首先获取现有字符串-但这意味着需要2个查询
但正如@MahmoudGamal所建议的,单独的表格是最好的。因为这很难从中“删除”项目。。。您需要执行PHP端的操作。如果您确实希望维护字符串,可以在查询中执行以下操作:
UPDATE `table`
SET `fav` = CONCAT(`fav`, ",98")
WHERE `id` = 1234;
或者在PHP中执行concat并使用它进行更新-即首先获取现有字符串-但这意味着需要2个查询
但正如@MahmoudGamal所建议的,单独的表格是最好的。因为这很难从中“删除”项目。。。您需要在PHP端进行操作。您不应该在单个列中保存逗号分隔的值。这违反了法律 检查下面的答案以获得更广泛的解释:
最好的方法是按照@Mahmoud Gamal的建议创建一个单独的表,这很容易长期维护。您不应该在单个列中保存逗号分隔的值。这违反了法律 检查下面的答案以获得更广泛的解释:
最好的方法是按照@Mahmoud Gamal的建议创建一个单独的表,从长远来看很容易维护。创建一个表“favs”如何,您可以在其中存储id以及将其添加到favs列表中的用户
ID | USER_ID
------------
5 | user_1
6 | user_1
8 | user_2
6 | user_2
select ID from favs where USER_ID = "user_1"
这将获取用户_1的页面id
请记住,如果用户需要添加/删除fav页面,则需要管理此表的插入/更新/删除
一个更简单的解决方案是在用户的详细信息中有一个favs pages字段
USER_ID| FAVS
-------|-----
user_1 | 5*6
user_2 | 8*6
通过使用此解决方案,您将能够轻松解析favs字段并获取有关页面的信息(在本例中,您只需要解析字符串)
当您需要更新或删除用户favs列表中的任何页面时,您只需解析字符串、删除要删除的页面id或将新页面附加到字符串中即可
这种情况下的缺点是,您将无法轻松找到fav页面(最终将使用LIKE构造)。创建一个表“fav”,您可以在其中存储id以及将其添加到fav列表的用户,怎么样
ID | USER_ID
------------
5 | user_1
6 | user_1
8 | user_2
6 | user_2
select ID from favs where USER_ID = "user_1"
这将获取用户_1的页面id
请记住,如果用户需要添加/删除fav页面,则需要管理此表的插入/更新/删除
一个更简单的解决方案是在用户的详细信息中有一个favs pages字段
USER_ID| FAVS
-------|-----
user_1 | 5*6
user_2 | 8*6
通过使用此解决方案,您将能够轻松解析favs字段并获取有关页面的信息(在本例中,您只需要解析字符串)
当您需要更新或删除用户favs列表中的任何页面时,您只需解析字符串、删除要删除的页面id或将新页面附加到字符串中即可
这种情况的缺点是,您无法轻松找到fav页面(最终将使用LIKE构造)。设计比存储在字符串中要好得多,更灵活,更易于维护。(我正在写一个这样的答案)。@Mahmoud Gamal thx,我没有想过那样做,但我真的很想这样做,这样te ID存储在一行中,(OP更新)@Brian Oh我认为字符串是更好的选择,因为它可以节省空间等,只需要一个新列,而不需要一个新表。它的设计比存储在字符串中更好,更灵活,更易于维护。(我正在写一个这样的答案)。@Mahmoud Gamal thx,我没有这样想,但我真的很想这样做,这样te ID存储在一行中,(OP更新)@Brian Oh我认为字符串是更好的选择,因为它可以节省空间等,只需要一个新列,而不是一个新表thxAlright,这不是一个规范化的数据库。你需要有3张桌子<代码>用户,
项目
和用户项目
表将链接这两个项目,因此添加和删除记录很容易user\u items
将具有user\u id
和item\u id
列。好的,这不是一个规范化的数据库。你需要有3张桌子<代码>用户,项目
和用户项目
表将链接这两个项目,因此添加和删除记录很容易user\u items
将有user\u id
和item\u id
列。。。好电话,我忘了。(但无论如何我还是不会这样做!)我