我想消除sql注入,我应该使用mysqli真正的转义字符串还是在mysqli中清楚?例如
$nick=mysqli_real_escape_string($_POST['nick'])
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 23
您应该使用预准备语句并将字符串数据作为参数传递,但您不应该将其转义.
此示例取自文档:
/* 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();
}
Run Code Online (Sandbox Code Playgroud)
需要注意的是例子并没有打电话 mysqli_real_escape_string.您只需要mysqli_real_escape_string在查询中直接嵌入字符串时使用,但我建议您永远不要这样做.始终尽可能使用参数.
有关
| 归档时间: |
|
| 查看次数: |
21552 次 |
| 最近记录: |