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')
は私が探している行を返します。