【问题标题】:AES_DECRYPT() returns null fields codeigniterAES_DECRYPT() 返回空字段
【发布时间】: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,现在正在发生这种情况。

【问题讨论】:

    标签: php mysql codeigniter 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 时并非如此。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 2015-10-13
      • 2020-06-11
      • 2017-08-18
      相关资源
      最近更新 更多