Intereting Posts
Использование средств syslog с php error_log PHP-код не записывает данные в MySQL показ сообщения по $ _POST в wordpress Yii: показать сообщение, когда введенный поиск пуст, и отправить нажатие Как удалить 0 из строки получать данные из текстовой области и размещать на стене onfacebook Проверьте, существует ли свойство в магически заданных свойствах Android: отправка файла на сервер: PHP получает этот файл на сервере Как я могу убедиться, что у меня есть только один экземпляр PHP-скрипта, запущенного через Apache? используя «glob», чтобы получить все изображения из каталога Соответствие регулярных выражений вложенным начальным и конечным тегам Как я могу заставить функцию php cos вернуть правильное значение? Круговая диаграмма с использованием mysql и php Результаты Weird MYSQL с использованием PDO :: FETCH_ASSOC без псевдонима столбца mysqli / mysql запрос внутри функции не работает

array_map show mysql_real_escape_string () ожидает параметр 1

Возможный дубликат:
mysql_fetch_array () ожидает, что параметр 1 будет ресурсом, boolean задан в select

когда я использую

array_map('mysql_real_escape_string', $_POST); it display Warning: mysql_real_escape_string() expects parameter 1 to be string, array given in D:\xampp\htdocs\...\...\xyz.php on line 14 

в чем причина после этого?

EDIT: и если я использую

 array_walk_recursive($_POST, 'mysql_real_escape_string'); 

затем он отображает

 Warning: mysql_real_escape_string() expects parameter 2 to be resource, integer given in D:\xampp\htdocs\..\...\xyz.php on line 17 

пожалуйста, скажите также, что разница выше обоих методов? Заранее спасибо

Я предполагаю, что один из элементов $_POST действительно представляет собой массив, визуализирующий что-то вроде этого:

 print_r($_POST); Array ( ... 'element' => Array ( 'subelement' => 'some value' ) ... ) 

Когда array_map пытается передать значение $_POST['element'] в mysql_real_escape_string , он выдает описанную вами ошибку.

Вы могли бы попытаться обернуть вызов, хотя что-то по этой (непроверенной) функции:

 function recursive_escape(&$value) { if (is_array($value)) array_map('recursive_escape', $value); else $value = mysql_real_escape_string($value); } array_map('recursive_escape', $_POST); 

Возможно ли, что из значений вашего $_POST будет массив?

Ваша форма выглядит примерно так:

 <input type="text" name="value[]"> 

или любое из имен имеет [] в них? Это приведет к тому, что массив будет находиться в данных $_POST .

Попробуйте var_dump ваш $_POST и посмотрите, есть ли какое-либо из значений в массивах.

Если это массив, то у вас есть проблема, так как mysql_real_escape_string не будет принимать массив в качестве параметра. В этом случае вы хотели бы посмотреть на функцию Cassy, ​​чтобы сделать это рекурсивно.


Вы можете попробовать прочитать документацию, чтобы найти разницу между двумя функциями:

В array_walk_recursive функция передается, чтобы получить ключ как второй параметр, а array_map – нет.

(PHP имеет действительно отличную документацию. Используйте его.)