嘗試使用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