首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DB整个数组的转义

问DB整个数组的转义
EN

Stack Overflow用户
提问于 2013-11-28 15:42:01
回答 2查看 882关注 0票数 1

我正在使用PHP编写一个脚本,该脚本将为我提供一个MySQL查询,然后我将直接从MySQL工作台使用该查询。

我从.csv中获取数据,然后循环它们,用PHP编写SQL语法。

我的问题是如何转义数组中的每个字符串,以防止我得到一个损坏的查询。

如何在整个数组上运行mysqli_real_escape?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-28 15:51:13

首先,尝试使用PDO代替。使用准备好的语句,您的变量将与查询分开发送,您不必担心手动转义参数。

第二,如果您确实需要这样做,请在数组映射中使用mysqli_real_escape_string。像这样的东西应该能起作用

代码语言:javascript
复制
$escapedArray = array_map(function($val) use ($mysqli) {
        return is_string($val) ? $mysqli->real_escape_string($val) : $val;
}, $unescapedArray);

或者像这样的程序

代码语言:javascript
复制
$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。

代码语言:javascript
复制
array_walk_recursive($varArray, function(&$val) use($mysqli) {
    $val = !is_string($val) ?: mysqli_real_Escape_string($mysqli, $val);
});
票数 3
EN

Stack Overflow用户

发布于 2013-11-28 15:45:18

你可以用地图。类似于:

代码语言:javascript
复制
$safeArray = array_map ('mysqli_real_escape_string', $originalArray);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20270061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档