2013-03-04 6 views
4

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

<?php 
//from previous page - submitted by user. 
$_POST['email']="[email protected]"; 
$_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».

+0

Извините, на мой вопрос: зачем это возвращает пустую строку, и что я могу сделать, чтобы исправить ее? – Aehmlo

+0

Не могли бы вы добавить обработку ошибок в свой код? – Kermit

+0

Вы имеете в виду error_reporting (E_ALL) ;? Уже сделал. Ничего. – Aehmlo

ответ

3

Если ваше соединение пуст ($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'] = "[email protected]"; 

$email = mysqli_real_escape_string($link, $_POST['email']); 

var_dump($email); 

mysqli_close($link); 
?> 

Результат

string(17) "[email protected]"
+0

Оказывается, мой веб-хост изменил местоположение сокета, не сказав мне. Благодарю. – Aehmlo

+0

Всегда лучше использовать обработчик ошибок. В этом случае он указал бы вам на соединение. – Kermit

+0

У меня был один реализованный, а затем вынул его для производства. – Aehmlo

-1

Я имел эту проблему и нашел, что мой набор символов был установлен на латынь. Разрешено путем помещения

$con->set_charset("utf8"); 

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

Смежные вопросы