php - `mysql_real_escape_string()` returns empty MySql Fields -


i have html contact form in user allowed write whatever wants in message input field. form being posted using ajax , being processed in below php.

my problem empty row in mysql table.

i wondering why $message = $_post['message']; returns proper value, when $message = mysql_real_escape_string($_post['message']); returns empty string!!

what missing here??

  //posted data      $firstname  = mysql_real_escape_string($_post['firstname']);   $lastname   = mysql_real_escape_string($_post['lastname']);   $name       = $firstname. ' ' .$lastname ;   $email      = mysql_real_escape_string($_post['email']);   $phone      = mysql_real_escape_string($_post['phone']);   $subject    = mysql_real_escape_string($_post['subject']);   $hear       = mysql_real_escape_string($_post['hear']);   $message    = mysql_real_escape_string($_post['message']);     $db_server = mysql_connect($db_hostname, $db_username, $db_password)     // check if duplicates   $query_usercheck = " select * `test` name='$name' , email='$email' , phone='$phone' , subject='$subject' , message='$message' "; //matching fields   $usercheck = mysql_query($query_usercheck) or die(mysql_error());   $row_usercheck = mysql_fetch_assoc($usercheck);   $totalrows_usercheck = mysql_num_rows($usercheck);    if ( $totalrows_usercheck > 0 ) {         $duplicate = 'yes';   } else {         $duplicate = 'no';         //adding application data mysql database         $add = mysql_query("insert `test` (`date`, `day`, `time`, `name`, `email`, `phone`, `subject`, `from`, `message`)         values ('$date','$day','$time','$name','$email','$phone','$subject','$hear','$message')");   }  // close mysql mysql_close(); 

the problem connect database after mysql_real_escape_string. please move connecting database before escaping variables.

even better, rid of deprecated mysql_* functions (there gone in php7)! use mysqli or better: use pdo prepared statements mysql_real_escape_string not safe.


Comments