SQL Query不会区分大小写

时间:2012-09-20 23:46:17

标签: php mysql

我正在尝试创建一个系统来验证用户的用户名和密码。 我目前在检查用户名时遇到问题...... 如果有人的用户名是Burrito,当我通过查询查看它是否在数据库中时,它不会检查字母的大小写是否正确。 例: 用户名是迈克尔 他们可以输入michael或MiChAeL,它仍然认为它是相同的用户名。

这是我用来检查用户名的内容:

$isValid = mysql_query("SELECT username FROM " . getSQL_Info(3) . " WHERE username = '" . $user . "'");

感谢您的时间和帮助。 此外,如果您发现我的代码有任何问题,如果某些内容可能更好或者没有,请告诉我:)

3 个答案:

答案 0 :(得分:3)

您需要检查MySQL编码类型。如果是utf8_general_cilatin1_swedish_ci(或以_ci结尾的任何内容),则不区分大小写。

您可以通过更改表格编码或使用:

解决此问题
SELECT username FROM table WHERE BINARY username = :username

我会推荐这种形式。

相关:How can I make SQL case sensitive string comparison on MySQL?

  

此外,如果您发现我的代码有任何问题,可能会出现问题   更好或不是,请告诉我:))

答案 1 :(得分:1)

  • 您正在使用已弃用的mysql函数
  • 了解安全性
  • 您的问题的解决方案是

    SELECT * FROM foo WHERE(BINARY username =“someNaMe”)

答案 2 :(得分:0)

使用Collat​​e比较区分大小写的字符串。以下是MySQL manual

的链接