mysqli_real_escape_string () возвращает пустую строку

Я использую mysqli_real_escape_string () на адрес электронной почты и возвращает пустую строку. Он делает это с любым адресом электронной почты.

<?php //from previous page - submitted by user. $_POST['email']="aehmlo@aehmlo.com"; $_POST['password']='mypass1234'; //Link, I can verify it works. $mysql_info=array( "url"=>"url", "username"=>"username", "password"=>"password", "database"=>"database" ); $link=mysqli_connect($mysql_info['url'],$mysql_info['username'],$mysql_info['password'],$mysql_info['database']); //Now I attempt to sanitize the user input. $email=mysqli_real_escape_string($link,$_POST['email']); $password=sha1(mysqli_real_escape_string($link,$_POST['password'])); var_dump($email); var_dump($password);?> 

Сочетание моих таблиц – «latin1_swedish_ci».

Если ваше соединение пуст ( $link ), оно вернет пустую строку. Я тестировал это, и он работал нормально. Я бы рекомендовал вам добавить обработку ошибок к вашему соединению и включить отчет об ошибках.

 <?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); ?> 

результат

  строка (17) "aehmlo@aehmlo.com" 

У меня была эта проблема, и я обнаружил, что мой набор символов установлен на латинский. Решено, поставив

 $con->set_charset("utf8"); 

перед real_escape_string. Будет mysqli_set_charset в процедурном стиле.