php - Email is already in database, returns as if it isn't -


here background information on i'm trying here. i'm try create registration form website (successful far until point). data can entered db. thing i'm trying prevent duplicate email/usernames being entered db. through stackoverflow research, have found , tested following code:

$query = "select count(*) num_rows users email = ?"; $stmt = $mysqli->prepare($query); $stmt->bind_param("s", $email);  if ($stmt->execute()) {     return $stmt->num_rows; } 

what following:

if(user_exists($user_email) > 0) {     echo "email exists!"; } 

but passes if statement if email exist in database! email i'm trying enter, tests testemail@testemailweb.com in database! possibly point out have messed in code? there silly mistake have possibly done when trying perform this?

the fix particular problem here not using count(*) mentioned john , not depend on mysqli_stmt->num_rows using buffered result set:

$query = "select * users email = ?"; $stmt = $mysqli->prepare($query); $stmt->bind_param("s", $email);  return $stmt->execute() && $stmt->store_result() && $stmt->num_rows > 0; 

addendum

the thing i'm trying prevent duplicate email/usernames being entered db

you want use table constraints prevent (not app, else can access database). has added benefit of guarding against race conditions.

alter table users add unique(email); 

this raise error if attempt insert row email value exists. can check error on application side , whatever want it.


Comments

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -