将多个值存储到db字段中,以作为单独的值检索

时间:2010-11-04 09:57:53

标签: php mysql

是否可以存储多个值并查询数据库并将每个值分配为单独的实体?

例如,我有一个包含wallpaper列的数据库,我可以将其存储到其中。

wall_1.png,wall_2.png,wall_3.png

然后查询数据库并提取3个包含壁纸名称的变量。

所以我要从数据库中提取$defaultWall = "wall_1.png" $wall2 = "wall_2.png" $wall3 = "wall_3.png"< -

我也有一个名为settings的表,用户可以在这里设置所有设置。一栏是他们的个人资料的壁纸偏好。如果他们选择稍后更改,我希望他们手头有一系列上传的壁纸。因此,通过这样做,我想将一系列壁纸网址存储到数据库中,并使用一个小图像预览库拉动每个壁纸,以便从数据库中进行处理和调整大小。

3 个答案:

答案 0 :(得分:4)

是的,你可以。但是表字段中的多个值不满足规范化表单。

尝试为此行创建一个带壁纸的表格。

答案 1 :(得分:0)

从DDL逻辑来看,正确的方法是为壁纸图像定义另一个表格,该表格具有外键,可以将它们链接到该表格中具有“壁纸”列的行。

如果您没有找到任何理由,并且您只使用PHP,请使用serializeunserialize php函数从字段中访问该数据。您可以存储任何数据结构。

答案 2 :(得分:-2)

看看PHP中的expand()函数!

http://www.php.net/manual/en/function.explode.php

注意 我不认为这是处理这些值的最佳方法,如果你想能够将任意数量的壁纸(或没有)链接到我选择使用另一个表的对象。

create table tblMain (ItemId, Name, etc)
create table tblWallpapers (WallpaperId, WallpaperName)
create table tblMainUsesWallpapers (Wallpaperid, ItemId)

然后只需选择如下的值:

select * from tblWallpapers w
inner join tblMainUsesWallpapers muw
on w.WallpaperId = muw.WallpaperId
inner join tblMain m
on muw.ItemId = m.ItemId
where m.ItemId = x