我不知道何时使用它们。
$name = mysqli_real_escape_string($connection, $_POST['name']);
或
$name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
答案 0 :(得分:1)
real_escape_string()
必须用于sql字符串,即用引号括起来的查询部分。必须无条件地使用,尽管以前的操作。 real_escape_string()
转义字符串中的特殊字符,以便在SQL语句中使用,同时考虑连接的当前字符集。
在哪里
filter_input
按名称获取特定的外部变量,并可选择对其进行过滤。 filter_input
将为您提供验证特定字符串和字符输入的方法。
验证过滤器
顾名思义,它用于验证特定输入,例如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的更多信息。
所以我认为两者都有不同的角色。