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

Php 检查是否存在大写和小写字母的值,php,pdo,Php,Pdo,我想检查数据库中是否存在用户名,但我有一个问题,例如:如果我有username=jack和另一个username=jack的注册表 它接受 我想用小写和大写检查完整的用户名,并拒绝这种情况(jack-jack-jack…) 有一个打字错误。一致: if($rowr['username']==$val['username']) { 应该是: if($row['username']==$val['username']) { 此外,默认情况下,MySQL执行不区分大小写的查询。注意数据库排序规则中

我想检查数据库中是否存在用户名,但我有一个问题,例如:如果我有username=jack和另一个username=jack的注册表

它接受 我想用小写和大写检查完整的用户名,并拒绝这种情况(jack-jack-jack…)


有一个打字错误。一致:

if($rowr['username']==$val['username']) {
应该是:

if($row['username']==$val['username']) {
此外,默认情况下,MySQL执行不区分大小写的查询。注意数据库排序规则中的
\u ci
部分(例如
utf8\u general\u ci
),它表示不区分大小写。您必须在PHP中执行额外的检查,以检查不同的大小写

 if( strtolower($row['username'])==strtolower($val['username']) ) { echo "Exists";}
您还可以将
strtolower
替换为将字符串转换为大写的
strtoupper

注意:对于这种情况,
strtolower
strtoupper
将产生与@user3783243所述相同的结果

此外,如果您试图将这两个值与区分大小写的
进行比较,也就是说,您不希望
if('JAck'='JAck')
返回true,那么请使用严格比较
==

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

您可以在SQL查询中使用
大写字母

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

但我认为当用户注册时,应该将
用户名
存储为大写或小写。这比在SQL中使用
UPPER
要好

正在使用什么数据库服务器软件?您为排序设置了什么?如果得到匹配的结果,也不需要第二次比较。更改排序规则也是一个选项,那么只需检查是否有结果。@Raptor whats在PHP中执行额外检查,以检查不同的大小写??我就是这么想的want@user3783243同意,但为了兼容性和迁移能力,我建议使用不区分大小写的排序规则。有关详细讨论,请参阅。PHP比较检查
==
已经可以检查大小写。i、 e.
'Jack'=='Jack'
将返回
false
。OP请求反转。他想检查上下两种情况。我理解错误的概念,但在问题中,如果我有用户名= Jack,还有另一个登记器,用户名= Jack,接受它,猜它是倒置的,<代码>斯特劳普< /COD>应该被删除,但是,它的效果与
tolower
@user3783243是的,这是正确的,只是让用户知道他也可以使用它。@BobbyAxe这是回答你的另一个问题
$stmtr = $DB_con->prepare("SELECT username FROM users WHERE UPPER(username)=:username");
$stmtr->bindparam(":username", strtoupper($val['username']));