2012-09-20 37 views
1

我正在尝试创建一个系统来验证用户的用户名和密码。 我目前有检查用户名的问题... 如果有人的用户名是说,卷饼,当我通过查询,看看它是否在数据库中,它不会检查,如果大写的情况下是正确的。 例如: 用户名是Michael 他们可以输入michael或MiChAeL,它仍然会认为它是相同的用户名。SQL查询不检查区分大小写

这里是我使用什么来检查用户名:

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

谢谢您的时间和帮助。 此外,如果你看到我的代码有任何问题,如果有什么可以更好或不是,请告诉我:)

回答

1
  • 任何逃避你正在使用过时的MySQL功能
  • 注意安全
  • 你的问题的解决方案是

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

+0

谢谢! 不打扰你,但是有可能你可以解释一些更多的被弃用的函数,我看到有这个PDO ::查询,从我可以告诉取代mysql_query()。 谢谢。 我只想知道这个函数的手册页上的' - >'是什么意思,我看过很多地方,我无法找到合适的解释。 – MichaelMitchell

+0

对不起,但你找到了答案,但你自己:) pdo或mysqli取代了弃用的mysql_ *函数。 –

+0

oop(面向对象编程)中的箭头需要调用方法(为该对象定义..)。但这涵盖了一个巨大的话题:D –

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?

另外,如果你看到我的代码的任何问题,如果事情可以 好还是没有什么,请告诉我:)

+0

做出服务器范围的决定,所以改变编码。 –

0

使用Collat​​e比较区分大小写的字符串。这是一个指向MySQL manual的链接