2013-03-03 247 views
4

构建我的搜索引擎,供用户搜索三个变量$ Title,$ Text和$ Number ... 我如何在用户搜索时找到它,找到所有结果,而不管案例类型低或大写)用户键入$查询?MySQL - 不区分大小写的搜索

$query = trim ($query); 

$raw_results = mysql_query("SELECT * FROM posts 
     WHERE (`Number` LIKE '%".$query."%') OR (`Title` LIKE '%".$query."%') OR (`Text` LIKE '%".$query."%') ") or die(mysql_error()); 
+0

不推荐使用'mysql_ *'函数(请参见[red box](http://php.net/mysql_query))。此外,我看不到你使用'mysql_real_escape_string'并转义'_'和'%'的所有实例。 – 2013-03-03 18:47:17

+1

不过,这个问题与查询有关,而不是查询被调用的方法。 – 2013-03-03 18:49:05

+0

@CaptainFord:这就是为什么我发表我的评论作为评论。 – 2013-03-03 18:56:21

回答

2

您可以使用mysql LOWER()功能:

$query=strtolower($query); //Query to lower case 
$raw_results = mysql_query("SELECT * FROM posts 
    WHERE (LOWER(`Number`) LIKE '%".$query."%') OR (LOWER(`Title`) LIKE '%".$query."%') OR (LOWER(`Text`) LIKE '%".$query."%') ") or die(mysql_error()); 

然而,在PHP MySQL的功能已被弃用,你应该使用mysqli而不是mysql。

-1

我在公司自己的数据库中完成的一件事是使用PHP中的strtoupper()函数(特别是出于个人安全原因)大写。如果您在您的字段中使用utf8_ci排序规则,并且您希望区分大小写,这也会有所帮助。

+0

谢谢大家!帮助赞赏! – user2129470 2013-03-03 19:37:11

+1

这将从文本中删除所有格式,所以像标题这样的解决方案是不好的。 – 2014-01-27 14:54:11