尝试使用php插入新行到mysql数据库。加密输入时Mysql语法错误
密码是一滴我在bind_param
$stmt = $this->db->prepare("INSERT INTO USERS (email,password,key) VALUES (?,AES_ENCRYPT(?, ?),?)");
if (!$stmt) {
echo "prepare failed\n";
echo "error: ", $this->db->error, "\n";
return;
}
$rc = $stmt->bind_param("ssss", $email, $password, $key, $key);
if (!$rc) {
echo "bind_param failed\n";
echo "error: ", $stmt->error, "\n";
return;
}
错误尝试密码都s
和b
:您的SQL语法错误;请检查与您的MySQL服务器版本相对应的手册,以便在第1行的“key”VALUES(?,AES_ENCRYPT(?,?),?)'处使用正确的语法'
我该如何解决此问题?
是否有加密和散列密码的原因?散列作为一种方式更安全,并且您永远不需要解密密码。 – datasage 2013-02-25 18:51:40
如果多个用户选择相同的密码哈希将是相同的不是吗?以及我认为关键将是每个用户独特的,所以它将足够安全的每个人 – 2013-02-25 18:58:59
这并不重要。散列密码的目的是这样的,如果你的数据库被破坏,你将无法恢复密码。用加密密钥与用户信息一起存储即可。如果您尝试强制使用唯一密码,则会向用户显示某人正在使用该密码。它是一个蛮力的问题来弄清楚谁。 – datasage 2013-02-25 19:00:18