检查值是否存在大写和小写字母

时间:2018-08-28 03:09:40

标签: php pdo

我想检查数据库中是否存在用户名,但是我遇到了问题Ex:如果我有用户名= 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";
}

3 个答案:

答案 0 :(得分:2)

有一个错字。符合以下条件:

if($rowr['username']==$val['username']) {

应该是:

if($row['username']==$val['username']) {

此外,默认情况下,MySQL执行不区分大小写的查询。请注意数据库整理中的_ci部分(例如utf8_general_ci),这意味着不区分大小写。您必须在PHP中执行额外的检查,以检查大小写是否不同。

答案 1 :(得分:1)

 if( strtolower($row['username'])==strtolower($val['username']) ) { echo "Exists";}

您还可以将strtolower替换为strtoupper,将字符串转换为大写。

注意:对于这种情况,strtolowerstrtoupper的结果将与@ user3783243指出的结果相同

此外,如果您尝试将两个值与Case Sensitivity进行比较,即不希望if('JAck'== 'jAck')返回 true ,则使用严格比较===

 if('JAck'== 'jAck') //will return true
 if('JAck'=== 'jAck') //will retrun false

答案 2 :(得分:0)

您可以在SQL查询中使用UPPER_CASE

$stmtr = $DB_con->prepare("SELECT username FROM users WHERE UPPER(username)=:username");
$stmtr->bindparam(":username", strtoupper($val['username']));

但是我认为您应该在用户注册时将username存储为大写或小写。比在SQL中使用UPPER

更好