【问题标题】:Password Case Sensitivity using BINARY from MYSQL to SQLSRV使用 BINARY 从 MYSQL 到 SQLSRV 的密码大小写敏感性
【发布时间】:2024-01-10 18:57:01
【问题描述】:

我想知道是否有人可以在这里帮助我。

基本上,我试图让我的登录脚本区分大小写,尤其是在输入密码时。

我使用下面的代码,使用 BINARY 成功地使它在 PHP MYSQL 中完美运行:

$qry="SELECT * FROM studentrecords WHERE username='$login' AND password=**BINARY**'".($_POST['password'])."'";

我尝试在 PHP SQLSRV 中使用它,但它不起作用。

谁能告诉我另一种方法或如何使其在 PHP SQLSRV 中工作?

在此先感谢,我将不胜感激。

【问题讨论】:

    标签: php mysql case-sensitive sqlsrv


    【解决方案1】:

    您的 SQL Server 数据库的默认搜索选项可能不区分大小写。您可以使用COLLATE 轻松更改查询的此设置,如下所示:

    $qry="SELECT * FROM studentrecords WHERE username='$login' AND password COLLATE Latin1_General_CS_AS ='".($_POST['password'])."'";
    

    您应该查看使用参数化查询来避免 SQL 注入。微软官方SQLSRV Driver API Reference有很好的例子。

    Much more information about COLLATE

    【讨论】: