2016-07-28 8 views
0

組み込みのAES_ENCRYPTIONを使用しているデータベースから行を選択する準備ができていません。 phpMyAdminを使用してクエリを正常に実行すると、正常に動作し、期待値が返されますが、bind_paramsを実行すると常に-1が返されます。AES暗号化を使用するMysqli Prepared Statement

-1を返し、ノー行

$query = "SELECT `col0`, 
    CAST(AES_DECRYPT(`col1`, '$this->key') AS CHAR(50)) col1_decrypt, 
    CAST(AES_DECRYPT(`col2`, '$this->key') AS CHAR(50)) col2_decrypt 
    FROM `$table` WHERE `$field` = AES_ENCRYPT(?, '$this->key')"; 

// Also tried this in the where clause. 
// -- WHERE CAST(AES_DECRYPT(`$field`, '$this->key') AS CHAR(50)) = ?"; 

if($stmt = $this->db->prepare($query)) { 
    try { 
     $stmt->bind_param('s', $incomingField); 
    } catch (Exception $e) { 
     // Testing 
     print $this->db->error; 
    } 

    $stmt->execute(); 

    if($stmt->num_rows > 0) { 
     print "found"; 
    } else { 
     print "not found"; 
    } 

戻り

(mysqli_stmt)#52(10){ [ "affected_rows"] => INT(-1 ) ["insert_id"] => int(0) ["num_rows"] => int(0)

このよう普通のクエリの実行:

SELECT `col0`, 
    CAST(AES_DECRYPT(`col1`, 'secret key') AS CHAR(50)) col1_decrypt, 
    CAST(AES_DECRYPT(`col2`, 'secret key') AS CHAR(50)) col2_decrypt 
    FROM `tablename` WHERE `field` = AES_ENCRYPT('search value', 'secret key') 

は私が探している行を返します。

答えて

-1

愚かな質問...私は

$stmt->store_result(); 
を忘れてしまいました