php - User class not returning duplicate emails as false in database -


i've made user class validates data passed through form , subsequently updates database table users. want add functionality such checking if username , email exists in table, i've acquired members of stackoverflow in order start building this, below code still allowing duplicate emails inserted database, don't sql error messages success message follows "1 row inserted." expect error message "email exists"

any helpful.

public function insert() {  $result = $this->mysqli->prepare("select count(*) users email=?"); $result->bind_param("s", $_post['email']); $result->execute(); $result->bind_result($email_count); $result->close();     if ($email_count > 0) { echo "email exisits!"; } else { //escape post data added protection     $username = isset($_post['username']) ? $this->mysqli->real_escape_string($_post['username']) : '';     $cryptedpassword = crypt($_post['password']);     $password = $this->mysqli->real_escape_string($cryptedpassword);     $name = isset($_post['name']) ? $this->mysqli->real_escape_string($_post['name']) : '';     $email = isset($_post['email']) ? $this->mysqli->real_escape_string($_post['email']) : '';     $stmt = $this->mysqli->prepare("insert users (username, password, name, email) values (?, ?, ?, ?)");     //var_dump($this->mysqli->error);     $stmt->bind_param('ssss', $username, $password, $name, $email); // bind strings paramater     /* execute prepared statement */     $stmt->execute();     printf("%d row inserted.\n", $stmt->affected_rows);     /* close statement , connection */     $stmt->close();                 } // end email_count , insert table             } // end function 

i have used ajax code attached below , worked me.... try if helpful....

ajax code-----------------

   <script type="text/javascript">     $(document).ready(function() {         // check username availability on focus lost         $('#username').focusout(function() {            if ($('#username').val()!='') {                var username=$('#username').val();            $.ajax({                     url: "/gtlqa/checkusernameavailability/checkavailability.html?username="+username,                     method:'get',                     success:function(data){                         if(data!="available")                             {                              $('input:submit').attr("disabled", true);                              $("#usernameerrormessage").html("username exists");                             }                         else                             {                             $("#usernameerrormessage").html("available");                             $('input:submit').attr("disabled", false);                             }                         }                });             }         });     });      function checkavailability() {         $.getjson("/checkusernameavailability", {             username : $('#username').val()         }, function(available) {             if (available) {                 fieldvalidated("username", {valid : true});                 $('input:submit').attr("disabled", false);             } else {                 $('input:submit').attr("disabled", true);                 fieldvalidated("username", {valid : false, message : $('#username').val() + " not available"});             }         });     }  </script> 

controller----------------

@requestmapping(value="checkavailability",method = requestmethod.get) public @responsebody string getavailability(@requestparam("username") string username) {     system.out.println("username is"+username);     boolean status=userservice.available(username);      if(status)     {     return "available";     }     else      return "username exists"; } 

you need call fetch after that:

$result->bind_result($email_count); $result->close();  $result->fetch();//fecth $result->close();  //then   if ($email_count > 0) { echo "email exisits!"; } 

note no need use real_escape_string prepared statement


Comments

Popular posts from this blog

Unable to remove the www from url on https using .htaccess -