我有一个检查登录的代码
$result5=$conn->query("SELECT * FROM admin-login WHERE username = '".$_POST['user']."' AND password = '".$_POST['pasw']."' ");
然后我切换到Prepared语句,我发现where子句中字符串之间的比较在Prepared语句中不区分大小写,但在上一个简单查询语句中是。
另请注意,我已将列中的COLLATE属性设置为latin1_general_cs
,以使用phpmyadmin检查是否区分大小写。不过,我仍然能够使用密码为“ AdmIN”的预备语句登录,db的值为“ admin”。
准备好的对帐单代码:
$sql5=$conn->prepare("SELECT phone1,username FROM admin-login WHERE username = ? OR phone1 = ? OR phone2 = ? OR email = ? AND password = ? ");
$sql5->bind_param("sssss",$_POST['user'],$_POST['pasw']);
$sql5->execute();
任何帮助将不胜感激,我之前也阅读过关于同一问题的堆栈溢出问题,我曾尝试过使用BINARY
之类的解决方案,例如WHERE BINARY password = ?
来触发区分大小写,但这对我不起作用,我在准备好的语句中尝试了password COLLATE latin1_general_cs
,但我仍然不知道为什么它不再起作用。