我正在使用PHP编写一个脚本,该脚本将为我提供一个MySQL查询,然后我将直接从MySQL工作台使用该查询。
我从.csv中获取数据,然后循环它们,用PHP编写SQL语法。
我的问题是如何转义数组中的每个字符串,以防止我得到一个损坏的查询。
如何在整个数组上运行mysqli_real_escape?
发布于 2013-11-28 15:51:13
首先,尝试使用PDO代替。使用准备好的语句,您的变量将与查询分开发送,您不必担心手动转义参数。
第二,如果您确实需要这样做,请在数组映射中使用mysqli_real_escape_string。像这样的东西应该能起作用
$escapedArray = array_map(function($val) use ($mysqli) {
return is_string($val) ? $mysqli->real_escape_string($val) : $val;
}, $unescapedArray);或者像这样的程序
$escapedArray = array_map(function($val) use ($mysqli) {
return is_string($val) ? mysqli_real_escape_string($mysqli, $val) : $val;
}, $unescapedArray);原因很简单。如果数组中的任何元素不是字符串,则转义它将返回null,因此您将按原样返回该元素。
编辑:用于嵌套数组,您必须使用array_walk_recursive,而不是array_map。
array_walk_recursive($varArray, function(&$val) use($mysqli) {
$val = !is_string($val) ?: mysqli_real_Escape_string($mysqli, $val);
});发布于 2013-11-28 15:45:18
你可以用地图。类似于:
$safeArray = array_map ('mysqli_real_escape_string', $originalArray);https://stackoverflow.com/questions/20270061
复制相似问题