Проблем с mysql_real_escape_string() функция

xlebabarov

Registered
Здравейте, мъчи ме тука една магия.

Код:
function mysql_escape($array = array()){
	for($i=0;$i<=count($array)-1;$i++){
		echo($array[$i].'<br>');
		
	}

}

Ми изкарва всичките стойности на $array:
Код:
admin
asddsa
33
1
1
988772699
0988772699

но когато се опитам да направя следното:

Код:
function mysql_escape($array = array()){
	$new = array();
	for($i=0;$i<=count($array)-1;$i++){
		echo($array[$i].'<br>');
		array_push($new, mysql_real_escape_string($array[$i]));
	}
        return $new;
}

Ми изкарва само:
Код:
admin

а съм задал
Код:
	mysql_escape(array($_POST['username'], $_POST['password'], $_POST['country'], $_POST['gender'], $_POST['language'], $_POST['phone_code'], $_POST['phone_num']));

Според вас на какво се дължи?
 
Нещо не разбрах какво те мъчи. Първо mysql_real_escape_string е depricated така че не е добре да се ползва. С array_push() си вкарваш стойностите в новия масив. Кое по точно не ти работи? Ако обходиш масива $new ще ти изведе всички стойности.
 
От PHP 7 нататък mysql_real_escape_string няма. Вероятно не си включил error report и не виждаш грешката, която ти хвърля.

Във втория код ти изкарва един резултат, после хвърля грешка, че real escape не съществува и приключва.

Между другото, няма смисъл да правиш нов масив, за да променяш този, който ти идва като параметър, понеже в PHP той не идва като референция към оригиналния.
 
PHP:
$new = array_map(
    'mysql_real_escape_string',
    array($_POST['username'], $_POST['password'], $_POST['country'], $_POST['gender'], $_POST['language'], $_POST['phone_code'], $_POST['phone_num'])
);
:?:
Или array_walk, array_reduce, няма нужда от цикъл.
Иначе както ти казаха - използвай mysqli екстеншъна, mysql вече няма в php7. Там имаш mysqli_real_escape_string() / $mysqli->escape_string()
 

Горе