【发布时间】:2014-05-06 10:24:19
【问题描述】:
我必须编写一个带有 where 子句的 sql 查询,该子句在数据库表中查找用户输入值。
假设用户输入了一个职位“科学和数学主管”
查询应该单独查找职位中的所有单词,并相应地返回部门列表。
$keyword = mysql_real_escape_string($keyword);
SELECT distinct departments.name FROM departments, jobtitle_keywords
WHERE jobtitle_keywords.keywords REGEXP '$keyword'
AND departments.id = jobtitle_keywords.dept_id;
此查询在理想情况下(没有特殊字符、空格等)完美运行,否则会失败
谁能指导我以正确的方式转义用户可以输入的各种特殊字符和异常,这样我的查询就不会失败。
非常感谢任何帮助。
谢谢
【问题讨论】:
-
你知道
REGEX是干什么用的吗?您应该阅读相关文档:dev.mysql.com/doc/refman/5.1/en/regexp.html -
是的,我知道 REGEX 的用法,我认为它很适合我的要求。有没有其他方法可以编写智能搜索查询,可以很好地处理用户输入?
-
如果您知道 REGEX 的用法,为什么要这样输入关键字而不是
keywords LIKE '%$keyword%'? dev.mysql.com/doc/refman/5.1/en/pattern-matching.html -
让我重新表述我的问题,用户可以输入这些职位,如科学和数学主管 *科学和数学主管 *科学/数学主管 *科学/数学主管 *科学、数学主管等。 . SQL 查询应该类似于 SELECT distinct department.name FROM department, jobtitle_keywords WHERE jobtitle_keywords.keywords like 'head' or like 'maths' or like 'science' AND department.id = jobtitle_keywords.dept_id;I want to search complete单词不匹配,这就是为什么我在喜欢中省略 % .. 请提出建议。
-
任何帮助将不胜感激。我被困在这里,必须对其进行排序.. 提前致谢#