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

标签 php mysql

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE Username=''' at line 1

代码如下:

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

最佳答案

这是非常危险的编码。如果有人(传统上称为 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 工具解析,并且让您可以更灵活地处理复杂的数组。

关于php - SET Password=$password 后出现语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47464049/

相关文章:

php - 如何通过按钮/变量增加天数?

php - Paypal IPN 不断重试,但通知 url 甚至没有得到回调

php - 使用 mysql 数据库根据第一个下拉框自动填充第二个下拉框

mysql - 使用可变表名创建 mysql 表

python - 使用 mysql 数据库配置 apache 超集

php - Mysql Query Group By Display 使用PHP

php - 如何在 Laravel PHP 中访问一个文件夹到另一个文件夹

php - 如何忽略PHP中的 undefined variable 错误

php - 使用 Xdebug 和 Zend Framework 进行交互式调试和断点

Mysql - 将所有表和列重命名为小写?