phpexplode() 来自 MySQL 数据库的变量 - 正确的语法?

标签 php mysql variables explode

我有一个表单,用户可以从工作 list (讲师、笔译员、口译员)中进行选择。结果存储为变量 ($employment) 并发送到 MySQL 数据库。它们由逗号空格分隔符分隔。

管理员可以通过后端页面登录,并被发送到列出不同作业的目录。单击“讲师”链接后,他们将进入一个页面,其中列出了所有单击“讲师”的用户。

为此,我使用了代码: $sql =“从 GDI_teacher WHERE $employment='讲师'中选择 *”;

但是,如果用户选择了多个职位(例如,讲师和翻译员),则该用户不会显示为使用上面的代码单击了讲师。

我相信我必须使用explode()函数,但不确定语法。我一直在猜测代码(来自其他论坛帖子),但没有成功。

我希望这一点很清楚。提前致谢!

最佳答案

explode() 仅在您运行查询并以 PHP 形式获得结果后才会为您提供帮助。您应该创建一个关系表来保存这些数据,但如果您想在 mysql 中获得所有正确的结果,您应该创建一个全文索引并针对该索引运行 MySQL 搜索。或者,您可以运行效率低得多的查询:

$sql = "select * from `GDI_teacher` WHERE `employment` LIKE '%Instructor%'";

在任意一侧放置通配符将使字符串匹配:

'Instructor'
'[something],Instructor'
'Instructor,[something]'
'[something],Instructor,[something]'

但是!要非常小心...如果类别中可能存在文本重叠(例如,“讲师”和“科学讲师”),您需要创建一个更复杂的查询(如果您不打算( a)只需创建一个关系表(最佳解决方案)或(b)一个全文索引(好的解决方案))您最后的查询将如下所示:

$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 的大小,您可能需要对两者都建立索引 UserIDEmployment

关于phpexplode() 来自 MySQL 数据库的变量 - 正确的语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9170623/

相关文章:

php - MySQL:如何检索包含撇号的数据

javascript - 如何连接字符串和变量以在 JavaScript 中创建新变量?

php - 限制偏移量大于实际记录的mysql select语句

Php 简单错误

mysql - 拿两个表,一对多,我怎样才能过滤掉很多表,然后加入 1 表中的所有匹配项?

mysql - 错误 1215 : Cannot add foreign key constraint when forward engineering

java - MYSQL特殊字符问题

MySQL 存储过程变量格式在 SELECT 语句中不起作用

c - 将变量发送到函数并在 C 中修改此变量

php - 使用 PHP/MySQL 显示一些统计信息的最有效方法