我在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,现在正在发生这种情况。
答案 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是字符串的情况并非如此。