我想知道哪个更强大filter_var
或mysqli_real_escape_string
。
更具体。
选项1:
//Course Title
$ctitle = trim($_POST['courseTitle']);
$clean_ctitle = filter_var($ctitle, FILTER_SANITIZE_STRING);
选项2:
//Course Title
$ctitle = trim($_POST['courseTitle']);
$clean_ctitle = mysqli_real_escape_string($con, $ctitle);
我也知道准备好的陈述,但我想过滤手中的数据。如果有其他选择,请告诉我。
答案 0 :(得分:3)
他们没有实现相同的目标,您将使用filter_var($ctitle, FILTER_SANITIZE_STRING)
来消除不需要的特殊字符,而mysqli_real_escape_string
是一种传输编码,可以应用所需的转换,以便您将存储的内容将完全是您提供的,避免SQL错误或注入。
通常,您将首先使用filter_var()
(或您使用的框架中的任何内置功能)从外部输入(表单数据,URL参数...)强制执行格式和允许的字符规则。然后,在保存您验证的数据时,您将使用mysqli_real_escape_string()
将数据注入MySQL字符串。
总结一下,
filter_var()
是关于过滤和验证输入数据。mysqli_real_escape_string()
是关于在MySQL字符串中使用数据之前转义数据。你不应该在他们之间做出选择,你应该同时使用它们; - )