Нет. Это не сработает вообще: $_POST
- это массив: mysql_real_escape_string
нужна строка в качестве первого аргумента. Однако вы можете достичь желаемого с помощью array_map
:
$_POST = array_map('mysql_real_escape_string', $_POST);
Или array_walk_recursive
, поскольку array_map
не работает со значениями записей массива:
array_walk_recursive($_POST, function(&$v, $k) {$v = mysql_real_escape_string($v);});
Однако лучше было бы использовать параметризованные запросы: это, безусловно, самый безопасный способ избежать внедрения SQL. Вышеуказанная опция не только делает ненужное экранирование (например, элементы массива $_POST
, которые не нужно вставлять в базу данных), но также усложняет использование данных в других контекстах, например каким-то образом вернуть их в браузер.