コードのこの部分が返さtrueれるべきではないのに返されるのはなぜですか?
$stmt = $dbh->prepare("SELECT COUNT(`user_id`) FROM `users` WHERE `username`= :username LIMIT 1");
$stmt->bindParam(':username', $username);
$stmt->execute();
return ($stmt->rowCount() == 1) ? true : false;
すでに登録されているフィールドにユーザー名を入力すると、true が返され、次のように出力されます。
That username has already been taken!
ただし、登録されていないユーザー名を入力すると、true が返され、上記の行が出力されます。これがなぜなのか、どのように修正できるのかわかりません。
PHP のマニュアルrowCount()に、クエリに問題があると記載されていることは知っていSELECTますが、クエリの影響を受ける行数を返す回避策が見つかりませんSELECT。