Maki
Maki

Reputation: 319

HTML PHP - How to check if the username already existed

The script is already working fine but I want to insert a command that allows only if the username is not yet used.

if (isset($_POST['submit'])) {
    $firstname = htmlentities($_POST['firstname'], ENT_QUOTES);
    $lastname = htmlentities($_POST['lastname'], ENT_QUOTES);
    $position = htmlentities($_POST['position'], ENT_QUOTES);
    $username = htmlentities($_POST['username'], ENT_QUOTES);
    $password = htmlentities($_POST['password_two'], ENT_QUOTES);
    $uniqid = uniqid('', true);
    if ( $firstname == '' || $lastname == '' ||  $position == '' || $username == '' || $password == '') {
        $error = 'ERROR: Please fill in all required fields!';
        renderForm($error, $firstname, $lastname, $position, $username, $password);

    } else {
        if ($stmt = $connection->prepare("INSERT INTO employee (uniqid, firstname, lastname, position, username, password) VALUES (?, ?, ?, ?, ?, ?)")) {
            $stmt->bind_param("ssssss", $uniqid, $firstname, $lastname, $position, $username, $password);
            $stmt->execute();
            $stmt->close();
        } else {
            echo "ERROR: Could not prepare SQL statement.";
        }
        header("Location: regemployee.php");
    }
} else {
    renderForm();
}

Upvotes: 0

Views: 76

Answers (2)

Logan Wayne
Logan Wayne

Reputation: 5991

Do another SELECT query which checks if the submitted username already exist:

$stmt = $connection->prepare("SELECT * FROM employee WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();

Then get the number of results:

$stmt->store_result();
$noofres = $stmt->num_rows;
$stmt->close();

Then, create a condition that if it yet doesn't exist, it will do the insert query:

if($noofres == 0){

    /* INSERT QUERY HERE */

} else {

    echo 'Username already taken.';

}

Upvotes: 0

Matt The Ninja
Matt The Ninja

Reputation: 2729

Make username unique on the DB, then when you try to insert the same username in to the DB again, the insert will through an error.

Alternatively you could do a SELECT * FROM employee WHERE username = ? and check if results is > 0.

Then you would know it exists already.

Upvotes: 1

Related Questions