1

重複ユーザー名チェッカーを作成しようとしていますが、間違っている場合はこれがおそらく正しい方法だと思います。基本的に、ユーザーが入力したユーザー名を変数に保存し、userNameその変数を使用してデータベースに行があるかどうかを確認し、そのLIKE場合は 1 以上のカウントを名前付きの変数に返します$countIF 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();

    }


?>
4

3 に答える 3

2

無効な構文を使用してMySQLで文字列連結を実行しようとしているようです。これを試して:

'SELECT COUNT(*) FROM `CLL_users` WHERE `user_name` LIKE CONCAT("%",:userName)'
于 2012-11-04T20:09:00.797 に答える
0

おそらく、LIKE の代わりに = を使用できます。SQL 構文自体は大文字と小文字を区別しません。特定のテーブルで大文字と小文字を区別するようにデータベースを設定できると思いますが、実際には、自分の MySQL データベースにはテーブルがないことを知っています。簡単に試すことができるかどうかわからない場合は、そこにあることがわかっているユーザー名を使用して select を実行し、大文字と小文字を区別して記述してください。

select WHERE 'user_name'=$entered_username を実行します。1 つ以上取得した場合は、新しいユーザーを追加しないでください。そうでない場合は先に進みません。もちろん、 user_field を一意としてマークすることもできます。そうすれば、重複がないことを確認でき、一見の価値があるかもしれません。

于 2012-11-04T20:18:28.730 に答える
-2

この選択を使用してみてください:

("SELECT COUNT(*) FROM CLL_usersWHERE user_nameLIKE "% . "'".$userName."'");

于 2012-11-04T19:54:10.343 に答える