2015-06-06 79 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