数组与表(PHP/MySQL)

amo*_*era 25 php mysql

认识吉米.他创造了新的人生目标,证明巧克力是有史以来最好的冰淇淋口味.为此,他构建了一个带有单选按钮和名称文本字段的简单表单,以便将链接发送给他的朋友.

在此输入图像描述

他正在使用一个非常常见的设置,MySQL和PHP将表单提交保存在一个如下所示的表中:

在此输入图像描述

selection是味道的id.这些风格存储在PHP数组中,因为他计划在以后的页面中使用favour列表:

$flavors = array(
   1=>"Chocolate",
   2=>"Cherry",
   ....
);
Run Code Online (Sandbox Code Playgroud)

表格取得了成功,他的朋友们开始要求Jimmy添加新选项,因此Jimmy决定将其提升到新的水平,并将国家,年龄,电子邮件和其他内容添加到表单中,但这一次他对此表示怀疑.将味道名称,国家,年龄和其他静态数据放在数组中或将它们中的每一个保存在数据库表中是否更好,他知道如何在查询中进行连接.

第一种方法

意味着拥有一个包含许多数组的PHP文件,并且每当Jimmy需要类似于以下内容的名称时访问它:

$query = mysql_query("SELECT name, flavor FROM votes")
while($row = mysql_fetch_assoc($query)){
   echo $row["name"]." - ".$flavors[$row["flavor"]];
}
Run Code Online (Sandbox Code Playgroud)

第二种方法

将意味着在数据库中有许多表,并且每次他需要这样的名称时都必须进行连接:

$query = mysql_query("SELECT name, flavor FROM votes LEFT JOIN flavors 
WHERE votes.flavor = flavors.flavor");

while($row = mysql_fetch_assoc($query)){
   echo $row["name"]." - ".$row["flavor"];
}
Run Code Online (Sandbox Code Playgroud)

虽然这似乎没什么区别,但对于Jimmy而言,这是一个重要的决定,因为他希望将来能够构建更多更大的形式.

Jimmy处理与数据库中的ID相关联的样式名称,国家/地区,年龄组等静态数据的最佳方式是什么?

鉴于环境细节:

  1. 这些数组是静态的,几乎不会改变
  2. 他将在几页上使用数据,因此硬编码不方便
  3. 添加新阵列通常更快

在此先感谢帮助他.

afu*_*ama 3

我认为吉米应该考虑如何展示他的数据。为什么把他的征服仅限于口味。

如果吉米想要存储大量小数据,那么数据库就是最佳选择。如果吉米想要存储项目的图像,那么这些图像应该存储在文件中,并且他应该将它们的相对位置存储到数据库中的某个根目录

也许一张表可以包含:

VOTE_ITEMS
    ID - PRIMARY KEY
    NAME
    IMAGE
    TAGS - (Maybe an imploded ID array with the IDs pointing to a TAG table)
    ...
Run Code Online (Sandbox Code Playgroud)

另一个表可以包含:

USERS
    ID - PRIMARY KEY
    ...
    (As much information as your want to collect from your users)
    ...
Run Code Online (Sandbox Code Playgroud)

投票:

POLLS
    ID
    VOTE_ITEM_IDS
    ...

USER_VOTES
    POLLS_ID
    VOTE_ITEM
    USER_ID
Run Code Online (Sandbox Code Playgroud)

由于吉米似乎对数据库了解很多,因此每当他想要添加一些内容时,他都可以根据自己的需要添加另一列(或表)。另外,如果我们包装一个可爱的用户系统,他将来可以在其他项目中重用它!