2012-09-24 36 views
0

我已經使用implode函數在單列中的select語句中插入了多個值。現在我想單獨檢索這些值以進一步查詢。 我有一個學生表,我在其中使用implode函數implode(',',$ _POST ['aoi']);將它們的不同感興趣區域存儲在單個列中。該表的結構是這樣的:使用PHP/MySQL從包含多個值的列中提取單個值

id | Name |   AOI 
------------------------------------------- 
101 | Paul | Hardware,Networking 
102 | Fred | Finance,Insurance,Banking 

現在我想根據他們的興趣單獨檢索這個學生數據。我試圖使用爆炸函數提取數據。但是它以數組格式返回數據。

而且我必須分別提取感興趣的區域。任何人都可以告訴我如何從包含多個值的列中提取單個值。這樣我可以執行我的進一步查詢。

Like $ query =「select student.id,student.Name from student where AOI ='Insurance'」;

謝謝。

+1

竅門1,規範數據庫。提示編號2規範化您的數據庫。 http://en.wikipedia.org/wiki/Database_normalization – Petah

+0

如果您使用其他數據庫(如MongoDB),則可以將'​​AOI'添加爲數組並存儲值。但使用MYSQL,你需要規範化數據庫。 –

+0

我是一個新手數據庫用戶。我一定會嘗試實現規範化的概念。謝謝! –

回答

5

您的數據庫結構根本上是錯誤的,它很可能會導致進一步的可擴展性問題。您應該查看database normalization的概念。在這個特殊的情況下,你應該使用多對多的關係:

學生:

id | name 
--------------- 
101 | Paul  
102 | Fred  

StudentInterests

id | student_id | interest_id 
--------------------------------- 
1 | 101   | 1 
2 | 101   | 2 
3 | 102   | 1 

興趣

id | interest 
---------------- 
1 | Insurance 
2 | Networkings 
+1

這就是答案,這是什麼與其他答案,鵝。 – Petah