まあ、私はこれに困惑しているので、間違いなく正しいニックネームを選びました:
最初にそれを暗号化し、テーブルに暗号化された行を取得します。しかし、復号化しようとすると、結果セットとしてゼロ行が得られます。
暗号化:
INSERT INTO accesobases (company, username,email) VALUES
('hola',
AES_ENCRYPT('pedro','capullo'),
AES_ENCRYPT('myemail',' capullo')
);
復号化クエリを実行すると、0 行が表示されます。
SELECT company,
AES_DECRYPT('username', 'capullo'),
AES_DECRYPT('email', 'capullo')
from acceso
where company = 'hola';
会社を暗号化していないことに注意してください。間違いなく暗号化する必要がありますが、エラーの可能性がある場所を確認したかったのです。つまり、暗号化されていない単語 (company = hola) から逸脱していなくても、結果が得られます。したがって、次のようにしようとするとさらに悪化します。
where AES_DECRYPT ('company', 'capullo') = ' " . $company . " '
これは、私のphpページでどのように見えるかです。上記のブロックは、MySQL データベース自体で実行されていました。
したがって、質問は次の 2 つです。
- データを表示しないことの何が問題になっていますか
- ..."$company.." のバージョンが機能するかどうか。
しかし、私が言うなら:
SELECT * from acceso
WHERE company = 'hola';
次に、暗号化された単語を含む行を表示します
したがって、行を表示する前に復号化する時間がなく、何も表示されないかのようです。