【发布时间】:2013-09-16 08:06:13
【问题描述】:
我的问题很简单,但我认为的解决方案并不那么简单。
所以,我正在寻找一种有效的方法来使用 PHP 和 mySQL 使用学生的姓名来查询 students 表。目前,我有这个代码:
SELECT * from students
WHERE student_number='$searchKey' //can also search using student number
OR student_fname LIKE '%$searchKey%'
OR student_lname LIKE '%$searchKey%'
OR concat(student_lname,' ',student_fname) LIKE '%$searchkey%'
其中$searchKey 是搜索变量。这种类型的数据库查询对于一个单词或一个名字的名字足够有效。
问题是,如果我正在寻找“John James Smith”,但我只知道他的名字是“John Smith”,该怎么办?我怎样才能检索到“John James Smith”记录?所有的答案将不胜感激。提前致谢。
【问题讨论】:
-
在 MySQL 中,有专门为此设计的FULLTEXT INDEXING。
-
小心:这看起来对 sql 注入很开放......
-
@arkascha 不是。搜索变量在成为 $searchKey 之前会经过不同的过滤,然后我将它扔给函数 :) 另外,我使用 CodeIgniter 活动记录,它会自动转义变量。
-
@AlmaDoMundo 如何修改表格以允许全文索引?
-
@ChristianCastillo 您是否通过我上面发布的链接阅读了手册页?