यदि आप जांचना चाहते हैं कि username
पहले से ही उपयोग किया जा चुका है :
SELECT * FROM users WHERE username = :username
यदि आप एक पंक्ति लौटाते हैं:आप अपनी त्रुटि फेंक देते हैं , अन्यथा आप अपना INSERT
. करें
तो आपका कोड इस तरह दिखना चाहिए:
if ($valid) {
$pdo = Database::connect();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql_check = "SELECT * FROM users WHERE username = :username";
$test = $pdo->prepare($sql_check);
$test->bindParam(':username', $username);
$test->execute;
अब यह जांचने के लिए दो समाधान हैं कि क्या आपके पास एक पंक्ति है:
if($test->rowCount() > 0) {
// error
}
या
$user = $test->fetch();
if (!empty($user)) {
// error
}
और अब अगर आपको कोई त्रुटि नहीं है, तो क्या आप सम्मिलित करते हैं:
else {
//$password = md5($password);
$sql = "INSERT INTO users (username,password,role) values(?, ?, ?)";
$q = $pdo->prepare($sql);
$q->execute(array($username,$password,$role));
Database::disconnect();
header("Location: index.php");
}
}