簡體   English   中英

使用新信息更新數據庫,但同時保留舊信息

[英]update database with new info but keep old info aswell

如何使用新信息更新數據庫,同時又保留舊信息?

我的目的是要有一個收藏夾按鈕,單擊該按鈕會將項目ID添加到成員收藏夾列表中,這樣他們就可以調用fav.php?fav = janedoe之類的東西,並列出其收藏夾列表。

我知道如何添加按鈕並從數據庫中獲取項目ID,我只需要運行更新的mysql查詢以及創建數據庫列時的“類型”。

該行內的信息將如下所示

1,12,14,15,34,46,74

然后,如果成員想要添加項目98,它將更新為

1,12,14,15,34,46,74,98

最后增加98。

我意識到這是一篇“您能為我做這件事”的帖子,但是我不知道從哪里開始。

您應該創建一個名為以下內​​容的新表:

MembersFavoritePage:

  • MemberId
  • PageId
  • ...

然后,只要用戶將頁面標記為收藏頁面,就在該表中進行插入。

如果您確實想要維護字符串,則可以在查詢中執行以下操作:

UPDATE `table`
SET `fav` = CONCAT(`fav`, ",98")
WHERE `id` = 1234;

或在PHP中執行concat並進行更新-即先獲取現有字符串-但這意味着2個查詢。

但是最好使用@MahmoudGamal建議的單獨表。 由於很難從中“刪除”項目,因此您需要在PHP端進行操作。

您不應將逗號分隔的值保存在單列中。 違反第一范式

檢查以下答案以獲得更廣泛的解釋:

將分隔列表存儲在數據庫列中真的不好嗎?

最好的方法是按照@Mahmoud Gamal的建議創建單獨的表,該表很容易長期維護。

如何創建一個表“收藏夾”,您可以在其中存儲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的頁面ID。

請記住,如果用戶需要添加/刪除收藏夾頁面,則需要管理該表的插入/更新/刪除。

一個更簡單的解決方案是在用戶的詳細信息中添加一個收藏頁面字段

USER_ID| FAVS
-------|-----
user_1 | 5*6
user_2 | 8*6

通過使用此解決方案,您將能夠輕松解析favs字段並獲取有關頁面的信息(在這種情況下,您只需要解析字符串)即可。

當您需要從用戶收藏夾列表中更新或刪除任何頁面時,只需解析字符串,刪除要刪除的頁面ID或將新頁面附加到字符串即可。

在這種情況下,缺點是您將無法輕松找到收藏夾頁面(最終將使用LIKE構造)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM