mysqli的真正转义字符串,我应该使用它?(mysqli real escape string,

2019-07-17 12:25发布

我想消除SQL注入,我使用mysqli真正转义字符串或者是清楚的mysqli? 例如

$nick=mysqli_real_escape_string($_POST['nick'])

Answer 1:

您应该使用准备好的语句 ,并通过字符串数据作为参数,但你不应该逃避它。

这个例子是从文档采取:

/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    printf("%s is in district %s\n", $city, $district);

    /* close statement */
    $stmt->close();
}

请注意,例如调用mysqli_real_escape_string 。 你只需要使用mysqli_real_escape_string如果你在查询中直接嵌入的字符串,但我劝你从来没有做到这一点。 尽可能始终使用参数。

有关

  • 如何防止在PHP中SQL注入?


Answer 2:

是的,你可以使用mysqli_real_escape_string格式化字符串,如果你要实现自己的查询处理器,使用占位符或某种查询生成器的。

如果你打算在代码中使用裸API函数(这显然是错误的做法,但当地的乡亲非常普及) - 更好地去准备好的声明。

无论如何,你不能“消灭SQL注入”单独使用此功能。 mysql(i)_real_escape_string功能不会阻止打针,不应该被用于任何保护。



文章来源: mysqli real escape string, should I use it?
标签: mysqli