如何将逗号分隔的数据库值导入数组

时间:2015-01-30 21:22:38

标签: php sql arrays

而不是为每个值创建一个db列,我想将它们包含在一个字段中,然后将这些逗号分隔值调用到PHP数组中,以便稍后单独调用。

实施例; 'data_set'的db值是; 111,222,333

$sql_data = $get['data_set'];

$data_set = array ( $sql_data ); 

我希望$ data_set [0]返回111,$ data_set [1]返回222等等

相反,它返回整个db值,表示导入未识别逗号分隔值。

我该如何解决这个问题?或者有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

我强烈建议使用一对多或多对多设计,而不是将值填入单个字段。这样做会在将来引起问题,维护将是一场噩梦。如果您提供有关您正在使用的数据类型的更多信息(数字代表什么?数字使用了什么?)我很乐意说明更实用的设计。

那就是说,如果你坚持在一个字段中有多个值,你可以使用PHP函数explode()

$data_set = explode(',', $sql_data);

根据评论更新了答案

在这种情况下,有几种方法可以做到这一点。如果属性总是以相同的顺序并且代表相同的东西(并且只有5-6),我建议将它们分成不同的列并适当地命名列。

如果有很多潜在的属性并且它们是变量的,我建议创建一个配置文件表,一个属性表(只是id和name),以及profilesToProperties表。这将允许随着时间的推移对属性进行最灵活的调整。要获取给定个人资料的所有属性,您可以执行以下操作:

SELECT prof.username, prop.name
FROM profiles prof
    LEFT JOIN profilesToProperties ptp ON prof.id = ptp.profile_id
    LEFT JOIN properties prop ON prop.id = ptp.property_id
WHERE prop.id = :id

这仍将返回零属性的配置文件。

答案 1 :(得分:0)

它可以用于什么:测验网页,其中每个问题都有例如4个不同的选择1-4。用户转到下一个问题(程序从db(4,4,2,4,1,3)中的字段中提取数字)表示前一个问题的答案,将当前问题的数字广告到字符串并更新db中的字段(4 ,4,2,4,1,3,1)  如果有50个问题,那么表格中将有50多列可供回答。