mysqli_real_escape_string vs filter_input()?我应该使用什么方法?

时间:2016-02-02 07:42:26

标签: php mysql database

我不知道何时使用它们。

$name = mysqli_real_escape_string($connection, $_POST['name']); 

$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);

1 个答案:

答案 0 :(得分:1)

real_escape_string()必须用于sql字符串,即用引号括起来的查询部分。必须无条件地使用,尽管以前的操作。 real_escape_string()转义字符串中的特殊字符,以便在SQL语句中使用,同时考虑连接的当前字符集。

在哪里

filter_input按名称获取特定的外部变量,并可选择对其进行过滤。 filter_input将为您提供验证特定字符串和字符输入的方法。

  1. 验证过滤器
  2. 清理过滤器
  3. 其他过滤器
  4. 过滤标志
  5. 验证过滤器

    顾名思义,它用于验证特定输入,例如FILTER_VALIDATE_EMAIL

    $email = "abc@example"; // wrong email
    
    if(filter_var($email, FILTER_VALIDATE_EMAIL)){
        echo $email.'<br>';
        var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));
    }else{
        var_dump(filter_var($email, FILTER_VALIDATE_EMAIL));   
    } 
    

    清理过滤器 它将用于验证并从字符串中删除字符。

    FILTER_SANITIZE_EMAIL   "email"         Remove all characters except letters, digits and !#$%&'*+-=?^_`{|}~@.[]. 
    

    有关filter_value的更多信息。

    所以我认为两者都有不同的角色。