我的数据库中有一个字段,我想存储编码后的信息。所以我想使用AES_ENCRYPT(),AES_DECRYPT()函数。
我对正确的用法有个小问题...
这就是我需要修改的代码,但是我尝试了很多方法,总是得到SQL语法错误。
$query="update users set test='".$_POST['info']."' where name='".$_SESSION['user']."'";
mysql_query($query) or die(mysql_error());我试过这样做:
$query="update users set (test='".$_POST['info']."', AES_ENCRYPT('".$_POST['info']."', 'secretkey') ) where name='".$_SESSION['user']."'";
mysql_query($query) or die(mysql_error());还有这个:
$query="update users set test='".$_POST['info']."' where name='".$_SESSION['user']."'";
mysql_query(AES_ENCRYPT('$query','secretkey') or die(mysql_error());发布于 2010-02-15 18:24:26
好吧,试试这个:
mysql> create table test(user varchar(100), password varchar(100));
Query OK, 0 rows affected (0.09 sec)
mysql> insert into test(user,password) values('patrick', AES_ENCRYPT('password', 'mykey'));
Query OK, 1 row affected (0.00 sec)
mysql> select * from test where user = 'patrick';
+---------+------------------+
| user | password |
+---------+------------------+
| patrick | stuff |
+---------+------------------+
mysql> update test set password = AES_ENCRYPT('new password', 'mykey') where user = 'patrick';
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select AES_DECRYPT(password, 'mykey') from test where user = 'patrick';
+--------------------------------+
| AES_DECRYPT(password, 'mykey') |
+--------------------------------+
| new password |
+--------------------------------+发布于 2010-02-15 18:26:00
第二个代码片段没有将AES_ENCRYPT的返回值赋给任何列,因此您的UPDATE语法不正确。参见http://dev.mysql.com/doc/refman/5.1/en/update.html。
如果要将加密数据存储在名为"info“的列中,则update语句应为...info=AES_ENCRYPT( ...
第三段代码是无效的,因为您正在尝试计算PHP语言中名为AES_ENCRYPT的函数。很可能您的PHP环境中没有这样的函数,因此PHP解释器会因错误而中止。
发布于 2010-02-15 18:26:44
`$query="update users set (test='".$_POST['info']."', test_encrypted = AES_ENCRYPT('".$_POST['info']."', 'secretkey') ) where name='".$_SESSION['user']."'";
mysql_query($query) or die(mysql_error());`如果你想完全加密sql查询,在服务器上使用ssl支持,而不是在php客户端。
https://stackoverflow.com/questions/2265199
复制相似问题