2013-08-03 76 views
2

在我的MySQL數據庫中,我的排序規則設置爲utf8_general_ci。我還檢查了數據庫中表格的排序規則。這應該允許不區分大小寫的查詢。但是,所有查詢仍然區分大小寫。不區分大小寫的MySQL數據庫

例如,如果我擁有第一個字母大寫的用戶名,此查詢將不起作用。

SELECT * 
    FROM users 
    WHERE username = 'test' 
    AND password = 'test' 

我正在使用MySQL 5.5.27社區版。謝謝。

回答

1

您整理設置爲ci(不區分大小寫)只會影響你的數據,而不是列的搜索方式。 IIRC,列名區分大小寫,表名不是。

遵循數據庫的標準命名約定。

0

我不知道太多關於設置爲不區分大小寫的數據庫,但是你可以用較低的()

如:

SELECT * FROM users WHERE Lower(username) = 'test' AND lower(password) = 'test' 
+1

這是可行的,但是要注意它確實[表掃描(http://dev.mysql.com/doc/refman/5.5/en /how-to-avoid-table-scan.html),所以速度很慢。你可以在插入或查詢之前存儲一個規範化的表單(在php中使用'strtolower()')來利用索引。 – cbednarski

0

按照@mauris答案。 否則,你在PHP中使用用strtolower($用戶名)和

SELECT * FROM users WHERE LOWER(username) = 'test' AND password = 'test' 
相關問題