2015-02-10 148 views
0

假設我有以下表中的信息選擇MySQL的列/用逗號分隔值排

+-------------+---------------+ 
+  id  + letters + 
+-------------+---------------+ 
+  1  + a, b, c, d, e + 
+-------------+---------------+ 

我試圖捕捉的列的值,並將其儲存在變量:

$result = mysql_query("SELECT letters FROM tbl WHERE id=1");  
while ($data = mysql_fetch_array($result)) { 

// Declare captured db variables 
$letter1 = ** what comes here? **; 
$letter2 = ** what comes here? **; 
} 
+4

Soooo在關係數據庫中使用逗號分隔嗎? – MadsBjaerge 2015-02-10 08:22:47

+0

Lolx。但是,這個問題與數據庫無關。它只是「如何分割包含(a)分隔符(s)的字符串」? – Mawg 2015-02-10 08:54:21

+0

並非真正的答案,但這是您數據庫設計時的難聞氣味。如果你有一個參考ID和五個條目的字母表? – borjab 2015-02-10 09:39:14

回答

1

如何對這個?

$result = mysql_query("SELECT letters FROM tbl WHERE id=1");  
    while ($data = mysql_fetch_array($result)) { 

    // Declare captured db variables 
    /* list($letter1,$letter2,$letter3,$letter4,$letter5) = explode(',' , $data['letters']); 
    */ 
    $letters = array(); 
    // letters array will have the exploded letters  
    $letters = explode(',' , $data['letters']); 
} 

你的問題還不清楚。對於一個更好的答案:)

+0

如果他從數據庫中獲得六個參數?和存儲值用逗號分隔...順便說一句,不要使用mysql_ *函數 – Debflav 2015-02-10 08:24:16

+0

@Debflav這個問題還不清楚。查看更新後的答案。 – Gogol 2015-02-10 08:25:00

+0

這個問題也許還不清楚...但使用mysqli,將關係改爲一對多似乎很有幫助。 – Debflav 2015-02-10 08:29:12

1

,而不必

$ letter1

$ letter2

我將成爲一個」有爆炸陣列請提供更多的細節。

$letter = explode(',', $data['letters']); 

這樣,你可以用一個簡單的$函[0]或$信[1]

現在上面的代碼,你只能通過while循環運行一次的假設工作acccess你的信。

如果通過while循環運行不止一次,我會做這樣的:

$letter[] = explode(',', $data['letters']); 

這是由$函[0] [0]訪問 - 第一個[]爲實例當它被提取時,第二個[]是你想要提取的字母。

另一件事

MySQL是過時/不打算使用/非常不安全的,所以我會建議你找另一個替代到MySQL,比如庫MySQLi或PDO - 最好是當你使用這些因爲這樣你就避免陷入糟糕的程序。

3

你可以試試這個方法:

$result = mysql_query("SELECT letters FROM tbl WHERE id=1"); 
$letters = explode(',',mysql_fetch_array($result)); 

現在您可以訪問使用數組任何字母,這樣$letters[0]; //a