私は、データベースにユーザーが既に存在するかどうかを確認する機能を実装しようとしていますが、すべての登録データを挿入しますが、誰かが本当に事前にすべての答えを感謝しています。エラーがどこにあるか私が識別しやすくしてください。PHPはユーザーが存在するかどうかチェックする
<?php
require '../ppuyakul/php/db_conn.php';
$message = '';
//Prepare date
$DOB = date("Y-m-d", strtotime($_POST['year'].'-'. $_POST['month'].'-'. $_POST['day']));
$accessType = "0";
//Check enpty field
if(!empty($_POST['email']) && !empty($_POST['password']) && !empty($_POST['fullname']) && !empty($_POST['username']) && !empty($_POST['password_confirmation']) && !empty($_POST['gender']) && !empty($_POST['country']) && !empty($_POST['state']) && !empty($_POST['city']) && !empty($_POST['day']) && !empty($_POST['month']) && !empty($_POST['year'])):
// Enter the new user in the database
$sql = "INSERT INTO assignment2 (fullname, username, email, password, gender, country, state, city, DOB, type) VALUES (:fullname, :username, :email, :password, :gender, :country, :state, :city, :DOB, :type)";
$stmt = $conn->prepare($sql);
$stmt->bindParam(':fullname', $_POST['fullname']);
$stmt->bindParam(':username', $_POST['username']);
$stmt->bindParam(':email', $_POST['email']);
$stmt->bindParam(':password', password_hash($_POST['password'], PASSWORD_BCRYPT));
$stmt->bindParam(':gender', $_POST['gender']);
$stmt->bindParam(':country', $_POST['country']);
$stmt->bindParam(':state', $_POST['state']);
$stmt->bindParam(':city', $_POST['city']);
$stmt->bindParam(':DOB', $DOB);
$stmt->bindParam(':type', $accessType);
$chk = $conn->prepare("SELECT username FROM assignment2 WHERE username = :name");
$chk->bindParam(':name', $username);
$chk->execute();
if($chk->rowCount() > 0):
$message = 'Error ! ! User already exists';
else:
if($stmt->execute()):
$message = 'Successfully created new user';
else:
$message = 'Sorry there must have been an issue creating your account';
endif;
endif;
endif;
?>
$ usernameはどのように設定されていますか? –
こんにちはPaulさん、ありがとうmucあなたの返信のために、私はここで宣言しようとしています '$ all_rows = $ chk-> fetchAll(PDO :: FETCH_ASSOC); foreach($ rowとして$ all_rows): $ username = $ row ["username"]; $ _GLOBAL ['username'] = $ username; endforeach; ' ' IF($ chk->をrowCount()> 0)の前に: ' まだ運 –
私はもともと投稿されたものの中にそのコードが表示されませんか? $ usernameを検索したとき(最初のコメントの前に)、このページには「ヒット」が1つしかありませんでした。上記のコードにforeachはありません。 rowCountチェックにelseを追加し、「行が見つかりません」(または何でも)何を取得するかを表示します。また、出力するものを見るために$ usernameをエコーすることもできます。 –