2014-12-06 53 views
0

我創建了一個數據庫,但沒有定義字符集,因此默認爲拉丁語。現在我需要做一個區分大小寫的搜索,所以我使用了命令:SQL中區分大小寫的搜索不起作用

$sql = "SELECT * FROM Users WHERE username = '$value' COLLATE SQL_Latin1_General_CP1_CS_AS"; 

問題是它沒有返回任何匹配。 在我的網頁中,我在頁面的head中有<meta charset="utf-8">,所以我想知道字符集編碼是否會成爲問題。 如果我在沒有COLLATE SQL_Latin1_General_CP1_CS_AS的情況下進行搜索,它可以工作,但它不區分大小寫。

可能是什麼問題? 我應該將數據庫轉換爲始終使用utf-8嗎?

+0

的字符集是沒有問題的,但你應該總是使用UTF-8(utf8mb4)。您必須使用區分大小寫或二進制排序規則。 http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html – 2014-12-06 18:54:00

+0

我會對用戶名使用不區分大小寫的方式,這樣人們更容易記住他們的用戶名,並且不會忘記他們是否有任何大寫字母用戶名中的字符。但那不是我決定的,這是你的決定。 – ub3rst4r 2014-12-06 18:58:05

+0

如果你想要一個總是以區分大小寫的方式處理一個列,用一個區分大小寫或二進制排序來聲明它 – 2014-12-06 19:05:34

回答

0

嘗試二進制運算符:

$sql = "SELECT * FROM Users WHERE BINARY username = '$_POST[userName]'"; 
+0

工作表示感謝 – 2014-12-06 19:25:39