2011-04-21 59 views
1

我试图根据输入到文本框中的字母进行PHP搜索。我希望它匹配一个模式并从数据库中找到相关结果。PHP模式匹配搜索系统

所以,如果我在

"Jo Smi" 

键入它会发现结果

Ĵo Smith, Pojo Smithson, Ojo Smith

如何将一个做到这一点。我知道如何从数据库中获取信息,但不是各个领域的一部分。

的目标是通过用户领域user_firstnameuser_lastnameuser_email

任何想法搜索来搜索?

+5

,什么是问题? – hsz 2011-04-21 16:22:09

+0

所有这些都是正确的答案:'喜欢和通配符',但是,简单地将不被接受的文本放入SQL语句中可能存在安全风险(观察者使用'$ escapedTextString'提示此问题。 – horatio 2011-04-21 17:10:24

回答

1

您应该可以直接从您的查询中做到这一点。

获取文本框结果和逃避他们,那么做

SELECT * FROM `database` WHERE `name` REGEXP '{INPUT TEXT HERE}'; 

这应该工作,我认为。

+0

LIKE会更快,但您可以从REGEXP获得更准确的结果。取决于你的需要 – 2011-04-21 16:26:24

0

您可以使用LIKE子句在数据库领域做简单的搜索:

$query = "SELECT Fields FROM Table WHERE TestField LIKE '%".$escapedTextString."%'"; 
0

做对你的搜索词的大写的版本LIKE搜索。别忘了mysql_real_escape_string()

$searchpattern = mysql_real_escape_string(strtoupper("Jo Smi")); 
mysql_query("SELECT * FROM table WHERE UPPER(column) LIKE '%$searchpattern%';"); 
0

你好人以前的答案是好的 ,但你要知道这个信息

  1. 得到变量=>$name = $_GET['name'];,如果你想让它大写 使用

  2. strtoupper();

  3. 如果你想 使它小写使用 strtolower();
  4. 如果你想 搜索就应该更换=与 在那里同样where name = $namewhere name like $name
  5. 此信息
  6. ABC%=>变量开始与ABC和任何东西
  7. %ABC%=>变量完成启动任何东西,包括ABC,完成任何事情
  8. %ABC =>可变启动任何事情,完成与ABC