AES_DECRYPT() 返回空字段
Posted
技术标签:
【中文标题】AES_DECRYPT() 返回空字段【英文标题】:AES_DECRYPT() returns null fields codeigniter 【发布时间】:2017-02-06 22:55:47 【问题描述】:我在 mysql 上有一个加密表,当我在命令窗口上运行以下查询时,我得到了预期的结果:
select AES_DECRYPT(field,'key') as field from table
当我从 codeigniter 运行相同的查询时:
$this->db->query("SELECT AES_DECRYPT(field,'".$key."') AS field from table")
我得到带有稀有字符和空行的行
array(171)
[0]=>
array(1)
["nombre"]=>
NULL
[1]=>
array(1)
["nombre"]=>
NULL
[2]=>
array(1)
["nombre"]=>
string(17) "�O������aǥbnp/"
我正在使用 xampp php.ini 上的默认字符集设置为 utf8 数据库的字符集设置为utf8
我之前也遇到过类似的问题,但是查询返回的是十六进制值,所以我使用 utf8_encode() 来显示内容并且一切正常。我更新了 xampp,现在正在发生这种情况。
【问题讨论】:
【参考方案1】:假设$key
是一个字符串,那么这可能会起作用
$this->db->query("SELECT AES_DECRYPT(field, $key) AS field from table");
当您在命令窗口中运行select AES_DECRYPT(field,'key') as field from table;
时,您正在为AES_DECRYPT
的第二个参数提供一个字符串文字。使用作为字符串的 var 时并非如此。
【讨论】:
以上是关于AES_DECRYPT() 返回空字段的主要内容,如果未能解决你的问题,请参考以下文章