簡體   English   中英

如何將逗號分隔的數據庫值導入數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM