【发布时间】:2014-01-12 00:37:06
【问题描述】:
我发现了一个非常酷的密码丢失脚本,但是这一行让我很困扰
$r = mysql_query('INSERT INTO `keys` (username,key, vreme) VALUES ("'.$user.'", "'.$acckey.'", "'.$keyexp.'"') or die(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 'key, vreme) VALUES ("123123", "1ed2f5100a26298a55b2935cbea7d4a0", "1337991670"' at line 1
【问题讨论】:
-
我会说“构建一个包含值的 SQL 字符串”。见Little Bobby Tables的尾部。 (除此之外,请在 CLI 中尝试查询,因为这类问题(保留字)很容易找到。我已经提炼了错误消息并将其放在标题中。)
-
@pst:你无法确定
$user和其他变量之前是如何处理的。在每个主题中阅读可能的 sql 注入(尤其是在最有可能没有任何问题的主题中,例如这个主题)会变得很烦人 -
@zerkms 这对我来说无关紧要/我不在乎:手动构建字符串 -> 工作量太大而且太容易出错。 简单一致性和可重复性使代码整洁。
-
@pst:但您知道 - 您在这里提到的 bobby-tables 完全无关紧要。问题是关于语法错误,而不是最佳实践。他不懂基本的东西,而你已经开始谈论火箭科学了。
-
@pst:在这里谈论鲍比桌确实无关紧要。您无法说查询是易受攻击的。只有在代码中很明显时才应该提及它。
标签: php mysql syntax-error