当我使用
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
Run Code Online (Sandbox Code Playgroud)
之后是什么原因?
编辑: 如果我使用
array_walk_recursive($_POST, 'mysql_real_escape_string');
Run Code Online (Sandbox Code Playgroud)
然后它显示
Warning: mysql_real_escape_string() expects parameter 2 to be resource, integer given in D:\xampp\htdocs\..\...\xyz.php on line 17
Run Code Online (Sandbox Code Playgroud)
还请告诉我上述两种方法的区别?先感谢您
我假设其中一个元素$_POST确实是一个数组,可视化如下:
print_r($_POST);
Array
(
...
'element' => Array
(
'subelement' => 'some value'
)
...
)
Run Code Online (Sandbox Code Playgroud)
当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);
Run Code Online (Sandbox Code Playgroud)
您的值是否可能$_POST是一个数组?
您的表单是否类似于:
<input type="text" name="value[]">
Run Code Online (Sandbox Code Playgroud)
或者其中有任何名字[]?这将导致数组在$_POST数据中.
尝试var_dump荷兰国际集团的$_POST,看看是否有任何值是数组.
如果它是一个数组,那么你有一个问题,因为mysql_real_escape_string不会将数组作为参数.在这种情况下,你会想要看看Cassy的函数来递归地执行它.
您可能想尝试阅读文档以找出两个函数之间的区别:
在array_walk_recursive,传递它的函数接收一个键作为第二个参数,而array_map则没有.
(PHP有一个非常好的文档.使用它.)
| 归档时间: |
|
| 查看次数: |
5307 次 |
| 最近记录: |