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


How to import comma separated database values into an array

>与其为每个值创建一个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 值,指示导入无法识别逗号分隔值。

我该如何解决这个问题? 还是有更好的方法?

我强烈建议为此使用一对多或多对多设计,而不是将值塞进单个字段中。这样做会导致将来出现问题,维护将是一场噩梦。如果您提供有关您正在使用哪种数据的更多信息(数字代表什么?数字用什么?我很乐意说明一个更有用的设计。

也就是说,如果您坚持在单个字段中有多个值,则可以使用 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

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

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