3

users渡されたユーザー名がデータベースのテーブルに存在するかどうかを確認するための関数を設定しています。これを行うために、私は次のコードを使用しています:

function usernameCheck($username) {
    $con = new PDO( DB_DSN, DB_USERNAME, DB_PASSWORD );
    $stmt = $con->prepare("SELECT username FROM users WHERE username = ':name'");
    $stmt->bindParam(':name', $username);
    $stmt->execute();

    if($stmt->rowCount() > 0){
        echo "exists!";
    } else {
        echo "non existant";
    }
}

しかし、何を設定しようとして$usernameも、元に戻せませんexists!。のように追加の列を確認するために変更しようとしましたuserIDが、それでも機能しません。私の構文は正しいと思いますが、私はPDOを初めて使用するため、修正しやすいものが不足している可能性があります。

ありがとうございました。

4

2 に答える 2

12

エスケープする必要はありません。

$stmt = $con->prepare("SELECT username FROM users WHERE username = :name");

:name引用符なしで書くことでうまくいくはずです。PDOライブラリはすでにエスケープを実行します。

于 2012-10-08T21:48:15.730 に答える
0

以下のSQLクエリを試してください

$query="SELECT username FROM users WHERE username = 'name'";
$query_res =   $con->query($query);
$count= count($query_res->fetchAll());
if($count > 0){
 //user exists
}
于 2016-01-14T05:32:58.050 に答える