多维数组上的real_escape_string

时间:2017-12-01 06:51:51

标签: php multidimensional-array mysqli

我正在尝试从数据库类的多维数组中转义值。我目前的代码:

// Function to escape array values
private function esc_sql_arr(array $to_esc) {
    $clean_arr = array();
    foreach($to_esc as $k => $v) {
        if(is_array($to_esc[$k])) {
            foreach($to_esc[$k] as $key => $val) {
                $k = $this->_mysqli->real_escape_string($k);
                $key = $this->_mysqli->real_escape_string($key);
                $val = $this->_mysqli->real_escape_string($val);
                $clean_arr[$k][$key] = $val;
            }
        } else {
            $k = $this->_mysqli->real_escape_string($k);
            $v = $this->_mysqli->real_escape_string($v);
            $clean_arr[$k] = $v;
        }
    }
    return $clean_arr;
}

我假设以下输入示例(它应该是'where',我故意将其更改为测试上述方法):

$args = array(
    "table" => "t'1",
    "data"  => array(
                "c'sf4;(" => 'xdfbxdrf',
                'c2' => "'t'est'",
                'cs' => 'hey'
                ),
    "whe're" => array(
                'test' => 'test1'
                )
    );

的var_dump:

array (size=3)
  'table' => string 't\'1' (length=4)
  'data' => 
    array (size=3)
      'c\'sf4;(' => string 'xdfbxdrf' (length=8)
      'c2' => string '\'t\'est\'' (length=10)
      'cs' => string 'hey' (length=3)
  'whe\'re' => 
    array (size=1)
      'test' => string 'test1' (length=5)

代码无任何问题。但是,这是逃避多维数组的正确方法吗?

我相信我可能不必使用此方法,因为我使用预准备语句。任何有关使用此功能的反馈都是受欢迎的。

0 个答案:

没有答案