由於某些原因,對以下AES密鑰使用DBI的綁定參數功能會導致查詢無法找到任何行。爲什麼使用DBI的變量綁定導致MySQL查詢失敗?
use strict;
use warnings;
use DBI;
my $dbh = DBI->connect('dbi:mysql:database=thedb;host=localhost');
my $aes_key = 'X`[email protected]_BI\SgY[S%/<iaB>&VXd5zDA+';
print length($aes_key), "\n";
my $test = $dbh->selectrow_hashref("SELECT COUNT(*) FROM users WHERE id = ?\
AND AES_DECRYPT(enc_pass, '$aes_key') IS NOT NULL", undef, 1);
print $test->{'COUNT(*)'}, "\n";
$test = $dbh->selectrow_hashref("SELECT COUNT(*) FROM users WHERE id = ?\
AND AES_DECRYPT(enc_pass, ?) IS NOT NULL", undef, 1, $aes_key);
print $test->{'COUNT(*)'}, "\n";
輸出:
32
1
0
我看到$aes_key
有一個逃脫「S」,但它並不出現會對自\S
變量任何影響不是有效的逃生序列在Perl中。不過,我懷疑這個問題或類似的問題。