explode() 只会在您运行查询并在 PHP 中获得结果后为您提供帮助。你应该创建一个关系表来保存这些数据,但是如果你想在 mysql 中获得所有正确的结果,你应该创建一个全文索引并运行你的 MySQL 搜索。或者,您可以运行效率低得多的查询:
$sql = "select * from `GDI_teacher` WHERE `employment` LIKE '%Instructor%'";
在任一侧放置通配符将使字符串匹配:
'Instructor'
'[something],Instructor'
'Instructor,[something]'
'[something],Instructor,[something]'
但是!要非常小心......如果类别中有任何文本重叠的可能性(例如,'Instructor'和'Instructor of Science'),你需要创建一个更复杂的查询(如果你不打算( a) 只需创建一个关系表 (BEST SOLUTION) 或 (b) 全文索引 (OK SOLUTION)) 您最后的查询将如下所示:
$sql = "select * from `GDI_teacher` WHERE
`employment` LIKE 'Instructor'
OR `employment` LIKE 'Instructor,%'
OR `employment` LIKE '%,Instructor'
OR `employment` LIKE '%,Instructor,%'"
如果您想尝试使用关系表,则需要设置第二个 MySQL 表,因此您的结构如下所示:
表 1
`UserID | UserName | UserEmail | etc`
..........................................................
1 | John Doe | anon@aol.com | [More]
2 | Jane Doe | jane@aol.com | [More]
3 | Jake Doe | jd@yahoo.com | [More]
表 2
UserID | Employment
.........................
1 | Instructor
1 | Translator
2 | Instructor
2 | Translator
2 | Interpreter
3 | Instructor
因此,每个用户都可以有多个可能的就业列表,由用户的 ID 标识。现在,如果您想查看谁是讲师,您可以join the tables 或运行子查询。
只需确保 UserID 是表 1 上的自动递增主键,并且它在表 2 上被索引(但不是唯一的或主键)。根据表 2 的大小,您可能希望同时索引 @ 987654328@和Employment