首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置Password=$password后语法错误

设置Password=$password后语法错误
EN

Stack Overflow用户
提问于 2017-11-23 22:33:17
回答 1查看 44关注 0票数 0

错误:语法出现错误;请检查与MySQL服务器版本对应的手册,以便在第1行使用“WHERE用户名=”正确的语法。

代码如下:

代码语言:javascript
复制
$sql="UPDATE users SET Password=$pass_word WHERE Username='$_POST[username]'";
EN

回答 1

Stack Overflow用户

发布于 2017-11-23 22:44:31

这是非常危险的编码。如果有人(传统上被称为小鲍比桌)将他的密码更改为

代码语言:javascript
复制
 hello';--

你的查询变成了

代码语言:javascript
复制
UPDATE users SET Password='hello';-- ' WHERE Username='$_POST[username]'";

作为一种评论,被解读为非常宽泛的

代码语言:javascript
复制
UPDATE users SET Password='hello';

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

代码语言:javascript
复制
$stmt = $dbh->prepare('UPDATE users SET Password=? WHERE Username=?');
$stmt->execute($pass_word, $_POST['username']);

与PDO层一起处理避免麻烦。

同样的情况也适用于$_POST[username],我建议您将它写为“{$_POST‘’username‘}”--它更容易被几个PHP工具解析,并允许您更灵活地处理复杂的数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47464049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档