1

我在用着

$shouldfollow = "'".htmlspecialchars($_GET["shouldfollow"])."',";
echo $shouldfollow;

实现类似于 的字符串'apple',到目前为止它 100% 有效。棘手的部分是尝试在 MySQL 命令中使用该变量。这是我尝试过的。

mysqli_query($con,"UPDATE users SET following=".$shouldfollow." WHERE username='$username'");

但它反而说我的语法是错误的。我知道该命令将按照我的意愿工作(即,如果我删除该'',部分)。

如果我没有足够令人困惑的冗余,那么上图就是我运行命令后的最终结果。

4

1 回答 1

2

您应该使用 nothtmlspecialchars这对 sql 没有意义,而仅适用于 HTML,但是mysqli::real_escape_string

或者,更好的是,准备好的陈述

逗号怎么样 - 你必须一次转义每个变量:

$shouldfollow = mysqli_real_escape_string($_GET["shouldfollow"]);

或使用准备好的语句:

$stmt = mysqli_prepare($db, 'UPDATE users SET following = ? WHERE username = ?');
mysqli_stmt_bind_param($stmt, 'ss', $_GET["shouldfollow"], $username);
mysqli_stmt_execute($stmt);

注意:您仍然需要$_GET["shouldfollow"]额外检查是否存在,但这超出了这个问题的范围。

于 2013-04-15T00:13:04.667 回答