2016-09-28 3 views
1

ich eine verschlüsselte Tabelle auf mysql haben, wenn ich die folgende Abfrage im Befehlsfenster ausführen bekomme ich die erwarteten Ergebnisse:AES_DECRYPT() gibt Null-Felder codeigniter

select AES_DECRYPT(field,'key') as field from table 

wenn ich die gleiche Abfrage von codeigniter ausführen:

$this->db->query("SELECT AES_DECRYPT(field,'".$key."') AS field from table") 

i bekommen Zeilen mit seltenen Zeichen und null Zeilen

array(171) { 
    [0]=> 
    array(1) { 
    ["nombre"]=> 
    NULL 
    } 
    [1]=> 
    array(1) { 
    ["nombre"]=> 
    NULL 
    } 
    [2]=> 
    array(1) { 
    ["nombre"]=> 
    string(17) "�O������aǥbnp/" 

Im mit xamp p

der Standardzeichen auf php.ini gesetzt ist auf UTF-8

der Zeichensatz der Datenbank festgelegt ist auf UTF8

ich vor ein ähnliches Problem konfrontiert, aber die Abfrage zurückkehrte Hexwerte also habe ich utf8_encode() benutzt um den Inhalt anzuzeigen und alles hat gut funktioniert. Ich habe xampp aktualisiert und jetzt ist das passiert.

Antwort

0

$key Unter der Annahme, ist eine Zeichenfolge, dann könnte dies

$this->db->query("SELECT AES_DECRYPT(field, $key) AS field from table"); 

arbeiten Wenn Sie select AES_DECRYPT(field,'key') as field from table; im Befehlsfenster führen Sie eine Stringliteral auf das zweite Argument von AES_DECRYPT bieten. Nicht der Fall, wenn Sie eine Variable verwenden, die eine Zeichenfolge ist.

Verwandte Themen