[英]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多個列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.