フォームから入力を受け取り、データベースにユーザー アカウントを作成しようとする register.php ファイルがあります。ユーザーテーブルの「ユーザー名」フィールドに「UNIQUE」キーが追加されたinnoDB MySQLデータベースがあります。これは、ユーザー名の重複を防ぐためです。
以下は私のphpコードからの抜粋です。私のデータベースには、現在「testUser」というユーザーがいます。ただし、以下のコードを で実行すると$username = testUser
、データベースに重複する行が作成されていなくても、php ファイルは「アカウントが作成されました」を返します。ユーザーが既に存在する場合、例外がスローされると予想していましたか?
try{
$stmt = $db->prepare("INSERT INTO users (username, password, salt) VALUES (:username, :password, :salt)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':password', $hash);
$stmt->bindParam(':salt', $salt);
$stmt->execute();
}catch(PDOException $e){
returnJSON(0,'Error creating account');
}
returnJSON(1,'Account created');
function returnJSON($errorCode, $message){
$arr = array("returnCode" => $errorCode, "returnMessage" => $message);
echo json_encode($arr);
die();
}
----
try{
$db = new PDO('mysql:host='.$host.';dbname='.$dbname, $username, $password);
}
catch(PDOException $e){
$arr = array("returnCode" => 0, "returnMessage" => "unable to connect to server");
echo json_encode($arr);
die();
}
私の質問は、ユーザーのアカウントがデータベースに正常に追加されたかどうかを確認する方法です。
PS。最初にデータベースにクエリを実行し、このコードを呼び出す前に同じ名前のユーザーが存在するかどうかを確認するコードがあります。しかし、私はまだこれを修正/理解したいと思っています。