AES_DECRYPT()返回null字段codeigniter

时间:2016-09-28 19:42:32

标签: php mysql codeigniter xampp

我在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 个答案:

答案 0 :(得分:0)

假设$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是字符串的情况并非如此。