[英]Check value if exist with uppercase and lowercase letters
I want to check if username exists in Database but I have problem Ex : If I have username = jack and another register with username = JaCk 我想检查数据库中是否存在用户名,但是我有问题,例如:如果我有用户名= jack和另一个使用用户名= JaCk的寄存器
It accepts I want to check the full username with lowercase and uppercase and refuse such cases (jack - Jack - JaCk ....) 它接受我想用小写和大写字母检查完整的用户名,并拒绝这种情况(jack-Jack-JaCk ....)
$stmtr = $DB_con->prepare("SELECT username FROM users WHERE username=:username");
$stmtr->bindparam(":username", $val['username']);
$stmtr->execute();
$row=$stmtr->fetch(PDO::FETCH_ASSOC);
if($rowr['username']==$val['username']) {
echo "Exists";
}
There is a typo. 有一个错字。 In line:
排队:
if($rowr['username']==$val['username']) {
it should be: 它应该是:
if($row['username']==$val['username']) {
Also, by default, MySQL performs case-insensitive query. 另外,默认情况下,MySQL执行不区分大小写的查询。 Note the
_ci
part in your DB collation (eg utf8_general_ci
), it means case insensitive. 注意数据库排序
_ci
中的_ci
部分(例如utf8_general_ci
),这意味着不区分大小写。 You have to perform extra checking in PHP to check for different upper- and lowercase. 您必须在PHP中执行额外的检查,以检查大小写是否不同。
if( strtolower($row['username'])==strtolower($val['username']) ) { echo "Exists";}
You can also replace strtolower
with strtoupper
that will convert a string to upper case. 您也可以将
strtolower
替换为strtoupper
,以将字符串转换为大写。
NOTE: That for this case strtolower
and strtoupper
will result in the same outcome as noted by @user3783243 注意:在这种情况下,
strtolower
和strtoupper
将产生与@ user3783243相同的结果
Also if your trying to compare both values with Case Sensitivity
that is you don't want if('JAck'== 'jAck')
to return true then use strict comparison ===
另外,如果您尝试将两个值与
Case Sensitivity
进行比较,而又不希望if('JAck'== 'jAck')
返回true,则使用严格比较===
if('JAck'== 'jAck') //will return true
if('JAck'=== 'jAck') //will retrun false
You can using UPPER_CASE
in SQL query: 您可以在SQL查询中使用
UPPER_CASE
:
$stmtr = $DB_con->prepare("SELECT username FROM users WHERE UPPER(username)=:username");
$stmtr->bindparam(":username", strtoupper($val['username']));
But I think you should store username
as uppercase or lowercase when user register. 但是我认为您应该在用户注册时将
username
存储为大写或小写。 It is better than using UPPER
in SQL 比在SQL中使用
UPPER
更好
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.