SET Password = $ password后出现语法错误

时间:2017-11-23 22:33:17

标签: php mysql

  

错误:您的SQL语法出错;检查手册   对应于您的MySQL服务器版本,以便使用正确的语法   靠近' WHERE用户名='''在第1行

以下代码:

$sql="UPDATE users SET Password=$pass_word WHERE Username='$_POST[username]'";

1 个答案:

答案 0 :(得分:0)

这是非常有风险的编码。如果某人(传统上称为Little Bobby Tables)将其密码更改为

,该怎么办?
 hello';--

您的查询已成为

UPDATE users SET Password='hello';-- ' WHERE Username='$_POST[username]'";
作为评论的

被解释为非常宽泛的

UPDATE users SET Password='hello';

您的错误现在是您忘记了密码周围的引号 - 但您应该做的是转移到PDO。那么您的查询可能会变成

$stmt = $dbh->prepare('UPDATE users SET Password=? WHERE Username=?');
$stmt->execute($pass_word, $_POST['username']);

使用PDO层来避免麻烦。

同样适用于$_POST[username],我建议您将其写为" {$ _ POST [' username']}" - 它可以通过多种PHP工具更轻松地进行解析,并使您可以更灵活地使用复杂的数组。