filter_var或mysqli_real_escape_string

时间:2015-08-14 12:33:03

标签: php html mysql mysqli

我想知道哪个更强大filter_varmysqli_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);

我也知道准备好的陈述,但我想过滤手中的数据。如果有其他选择,请告诉我。

1 个答案:

答案 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字符串中使用数据之前转义数据。

你不应该在他们之间做出选择,你应该同时使用它们; - )