加密输入时出现Mysql语法错误

时间:2013-02-25 18:45:07

标签: php mysql sql

尝试使用php将新行插入mysql数据库。

密码是blob 我在s

中尝试了bbind_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;
         }

错误:您的SQL语法出错;查看与您的MySQL服务器版本相对应的手册,以便在第1行的“密钥”VALUES(?,AES_ENCRYPT(?,?),?)'附近使用正确的语法

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

key是mysql中的保留字。你必须引用它:

INSERT INTO users (email, password, `key`) ...
                                    ^---^--
在后勤方面,如果你将密码存储在它旁边,加密密码的重点是什么?它就像一座银行,建有一个50英尺厚的钢墙,然后用一点口香糖“锁住”。