2013-06-21 54 views
0

尊重我有PHP和MySQL的一個問題:大寫未在PHP/MySQL的

與帳戶的用戶:

username: star 
password: 4lask4 

轉換爲大寫並不:

username: StAr 
password: 4LasK4 

可與登錄尊重。

可能是什麼問題?

感謝

+3

我會懷疑你正在使用不區分大小寫的表格整理。 –

+0

http://dev.mysql.com/doc/refman/5.5/en/charset-general.html – CBroe

+0

我立即在phpmyadmin中檢查 – user2467899

回答

6

排序規則確定兩個字符串是否相等。您應該將用戶名和密碼列的排序規則更改爲區分大小寫或二進制。例如:

alter table TableName modify username varchar(xx) collate utf8_bin, 
    modify password varchar(xx) collate utf8_bin; 
+0

現在我有latin1_swedish_ci,所以我將其更改爲utf8_bin? – user2467899

+0

也ascii_bin它可以嗎?非常感謝 – user2467899

+0

使用latin1_bin:請注意,您的用戶名僅限於西歐和美洲語言。 –

2

退房列定義,並確保您的排序規則是不區分大小寫(CI)。您可以試試這個:

alter table your_table modify username varchar(xx) collate utf8_bin 
0

許多MySQL安裝的默認排序規則設置爲utf8_general_ci。這使得這兩個操作產生完全相同的結果。

SELECT * from users WHERE name = 'StAr' 
SELECT * from users WHERE name = 'star' 

您可以嘗試在數據庫中更改姓名列的排序規則。或者你也可以使用這樣的查詢:

 SELECT * from users WHERE name = 'StAr' COLLATE utf8_bin 

這utf8_bin整理比較精確的平等。但是,如果將COLLATE放入查詢中,則可能會禁用查詢的索引並導致MySQL性能問題。