I\'m using mysqli_real_escape_string() on an email address, and it returns an empty string. It does this with any email address.
I had this problem and found that my character set was set to latin. Solved by putting
$con->set_charset("utf8");
before the real_escape_string. Would be mysqli_set_charset in procedural style.
If your connection is empty ($link
), it will return an empty string. I tested this and it worked fine. I would recommend that you add error handling to your connection and enable error reporting.
<?php
$link = mysqli_connect("localhost", "root", "root", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$_POST['email'] = "aehmlo@aehmlo.com";
$email = mysqli_real_escape_string($link, $_POST['email']);
var_dump($email);
mysqli_close($link);
?>
Result
string(17) "aehmlo@aehmlo.com"