2013-03-03 198 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