Возможный дубликат:
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 имеет действительно отличную документацию. Используйте его.)