2015-06-06 122 views
0

我想如果採取檢查用戶名,但雄辯運行奇怪,我... 在我的數據庫中,只有一個用戶註冊,用戶名是yigitabiLaravel雄辯返回同一行不同的where子句

當我試圖讓用戶其中username是yigitabi它返回該行,但 當我試圖讓用戶其中username是yiğitabi返回相同的行...

我已經嘗試querylog和我的兩個查詢日誌的位置......

array(1) { [0]=> array(3) { ["query"]=> string(42) "select * from `users` where `username` = ?" ["bindings"]=> array(1) { [0]=> string(9) "yiğitabi" } ["time"]=> float(0.24) } } 

array(1) { [0]=> array(3) { ["query"]=> string(42) "select * from `users` where `username` = ?" ["bindings"]=> array(1) { [0]=> string(9) "yigitabi" } ["time"]=> float(0.24) } } 

我該如何解決這種情況?

+0

如果當前數據庫排序規則是不是UTF-8,嘗試將其設置爲utf_8_unicode_ci – chanafdo

+0

@chanafdo所有表都utf_8_unicode_ci和我改變了分貝utf_8_unicode_ci但沒有改變 – yigitozmen

+0

對不起我以前的評論。嘗試將其設置爲'utf_8_bin'。 – chanafdo

回答

1

MySQL matching unicode characters with ascii version有一個很好的討論這個問題。

爲了使其按照預期工作,您需要將排序規則從utf8_unicode_ci更改爲utf8_bin。但是,需要注意的是,有三種歸類設置:一種用於數據庫,一種用於每個表格,然後每種字段一種。

更改這些歸類之一不會影響其他歸類。更改數據庫上的排序規則不會影響任何現有表或字段上設置的排序規則;它會更改未來表格的默認排序規則。同樣,更改表上的排序規則不會影響該表中任何現有字段上設置的排序規則;它會更改未來字段的默認排序規則。

因此,要直接解決您的問題,您需要將username字段上的排序規則更改爲utf8_bin。您可以決定要更改排序規則的其他字段,表或數據庫。

+0

patricus謝謝你,我不知道字段整理,當我改變字段的整理時,我解決了我的問題。 – yigitozmen