【问题标题】:Effective way to store user selections in MySQL using PHP?使用 PHP 在 MySQL 中存储用户选择的有效方法?
【发布时间】:2011-01-14 07:31:05
【问题描述】:

我无法确定存储用户希望查看的信息的最佳方式。对于无法找到一种简单的方法来解释我的问题,我深表歉意,但这里有(例如,为了水果):

假设我的用户可以选择跟踪冰箱中的以下水果:

苹果、橙子、葡萄、梨

数据库已经设置了一个名为“fruits”的表,其中 Apples 是 id_fruit=1,Oranges 是 id_fruit=2,等等。

就像我说的那样,所有用户都可以选择跟踪这些水果,但是......我目前无法找到一种简单的方法来存储用户选择的他们想要跟踪的水果。如果用户 1 不喜欢 Apples,他可以进入他的设置,取消选中 Apples 并且不再让 Apples 出现在他的仪表板中。

我认为存储此信息的唯一方法是创建一个包含字段 user_id、apples、orange、grapes、pears 的表。然后存储水果的 user_id 和 Yes/No 或 0/1。

如果我想添加更多水果或其他任何东西,这会导致巨大的悲痛。

使用 PHP 在 MySQL 中存储这些信息的最佳方式是什么。我将如何检索这些信息。

用户登录,查看他想看的水果的数据库,并只显示他选择的那些水果。

任何帮助将不胜感激。

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    这是一种经典的拥有和属于多对多的关系,或者只是多对多的关系。

    Table `users`
    =============
    id
    name
    ...
    
    Table `fruits`
    ==============
    id
    name
    ...
    
    Table `users_fruits`
    ====================
    id
    user_id
    fruit_id
    

    users_fruits 中,每个用户-水果关系存储一行:(user_id: 42, fruit_id: 3)

    【讨论】:

    • 哦,哇,我想我应该拿出一本初学者的 php 书。非常感谢:)
    • 或者,好吧,这真的是一个关系数据库主题,而不是 php :) Deceze:赞成你的答案,它与我所说的基本相同,但解释得更好。
    【解决方案2】:

    创建一个跟踪实际关系的表。

    您有一个用户表,其中包含用户 ID。你有一个水果表,带有水果 ID。

    创建一个包含用户水果关系的表。让它有三个列,id、user_id和fruit_id。

    如果用户 1 跟踪水果 2,3 和 5,则在表中插入这三行。也就是说,user_id = 1 的三行和每行不同的fruit_id。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-15
      • 2023-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多