0

我使用 implode 函数将 select 语句中的多个值插入到单个列中。现在我想分别检索这些值以进行进一步的查询。我有一个学生表,我在其中使用内爆函数 implode(',', $_POST['aoi']); 将他们不同的兴趣区域存储在单个列中。表的结构是这样的:

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

现在我想根据他们的兴趣分别检索这些学生数据。我尝试使用爆炸功能提取数据。但它以数组格式返回数据。

而且我必须单独提取感兴趣的区域。谁能告诉我如何从包含多个值的列中提取单个值。这样我就可以执行我的进一步查询。

像 $query = "select student.id,student.Name from student where AOI = 'Insurance'";

谢谢。

4

1 回答 1

5

您的数据库结构从根本上是错误的,并且很可能会导致进一步的可伸缩性问题。您应该研究数据库规范化的概念。在这种特殊情况下,您应该使用多对多关系:

学生们:

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

学生兴趣

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

兴趣

id   | interest
----------------
1    | Insurance
2    | Networkings
于 2012-09-24T11:40:35.913 回答