使用mysql LIKE语句

时间:2012-11-04 19:49:34

标签: php mysql pdo prepared-statement

我正在尝试创建一个重复的用户名检查器,我想这可能是纠正我的方法,如果我错了。基本上我希望用户输入的用户名存储在名为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();

    }


?>

3 个答案:

答案 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。“'”);