1

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

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

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

感谢您的时间和帮助。另外,如果您发现我的代码有任何问题,如果有更好的地方,请告诉我 :)

4

3 回答 3

3

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

您可以通过更改表编码或使用以下方法来解决此问题:

SELECT username FROM table WHERE BINARY username = :username

我会推荐形式。

相关:如何在 MySQL 上进行 SQL 区分大小写的字符串比较?

另外,如果您发现我的代码有任何问题,如果有更好的地方,请告诉我 :)

于 2012-09-20T23:49:48.073 回答
1
  • 您正在使用已弃用的 mysql 函数
  • 注意安全
  • 你的问题的解决方案是

    SELECT * FROM foo WHERE (BINARY username="someNaMe")

于 2012-09-20T23:53:07.603 回答
0

使用 Collat​​e 比较区分大小写的字符串。这是MySQL手册的链接

于 2012-09-21T06:25:23.307 回答