我正在使用
$shouldfollow = "'".htmlspecialchars($_GET["shouldfollow"])."',";
echo $shouldfollow;
以实现类似于'apple',
的字符串。它到目前为止100% 。棘手的部分是尝试在MySQL命令中使用该变量。这是我尝试过的。
mysqli_query($con,"UPDATE users SET following=".$shouldfollow." WHERE username='$username'");
但它反而说我的语法错了。我知道命令将按照我想要的方式工作(即如果我删除'',
部分)。
如果我不够容易混淆,上面的图片就是我在运行命令后的最终结果。
答案 0 :(得分:2)
你不应该使用htmlspecialchars
这对sql没有意义,但仅限于HTML,但是mysqli::real_escape_string
或者,甚至更好,prepared statements
逗号怎么样 - 你必须立即逃避每个变量:
$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"]
是否另外存在,但这个问题超出了这个范围。