我正在尝试创建一个重复的用户名检查器,我想这可能是纠正我的方法,如果我错了。基本上我希望用户输入的用户名存储在名为userName
的变量中,然后使用该变量检查数据库中是否有LIKE
行,如果是,则返回1或者更多的是一个名为$count
的变量,然后我会有一个IF ELSE
语句,它会对用户大喊或让它们继续。我使用LIKE
语句遇到了问题。我认为我的语法可能是错误的,因为我已经尝试了几种不同的方法,但仍然没有运气。
<?php
require 'DB.php';
$userName = "tes";
echo $userName;
try{
$stmt = $conn->prepare('SELECT COUNT(*) FROM `CLL_users` WHERE `user_name` LIKE "% . ":userName" . "');
$stmt->bindValue(':userName', $userName);
$stmt->execute();
$count = $stmt->fetchColumn();
return $count;
echo $count;
} catch (PDOException $e){
echo 'Connection failed: ' . $e->getMessage();
}
?>
答案 0 :(得分:2)
看来你正在尝试使用无效语法在MySQL中进行字符串连接。试试这个:
'SELECT COUNT(*) FROM `CLL_users` WHERE `user_name` LIKE CONCAT("%",:userName)'
答案 1 :(得分:0)
您可以使用=而不是LIKE。 SQL语法本身不区分大小写。我想你可能能够设置你的数据库,以便某些表区分大小写但我知道通过使用我自己的MySQL数据库中没有表的事实。如果你不确定它是否容易尝试,只需使用你知道的用户名运行一个选择,但用不同的外壳写下来。
只需选择WHERE'user_name'= $ entered_username,如果你得到一个或多个不添加新用户,如果没有继续。你当然可以将user_field标记为唯一,这样你肯定知道你不会有重复,可能值得一看。
答案 2 :(得分:-2)
尝试使用此选择:
(“SELECT COUNT(*)FROM CLL_users
WHERE user_name
LIKE”%。“'”。$ userName。“'”);