【CodeIgniter】CodeIgniterでできると思ってたものができず焦った件

研究
Khwanchai Phanthong at Pexels
この記事は約2分で読めます。

この記事は2年前の記事です。当時の情報、理解に基づいておりますのでご留意ください

前提条件

MySQLで暗号化した文をもらいたかったので

SELECT HEX(AES_ENCRYPT('hogehoge', '暗号化のタネ')) as enc_password FROM `account`

こういうことやりたかったんですが。

CIに移植したら叱られた

CIで直訳するとこうなると思ったんだ。

$this->db->select("HEX(AES_ENCRYPT('hogehoge', '暗号化のタネ')) as enc_password");
$enc_password_query = $this->db->get('account');
$enc_password = $enc_password_query->row_array()['enc_password'];

$enc_password_query->num_rows() = 0になっちゃうんだ。

クエリビルダで吐き出されてるクエリをMySQLWorkBenchで流したらちゃんと帰ってくるから、正しいには正しい筈なんだ。orz
ただ100%正解ではないからCIとか通すといけない。
多分クエリビルダでfromテーブルの指定が不可避なので、そんなレコードおらんのじゃと素直に言われるんだ。

解決

仕方ないからこうやった。

$enc_password = $this->db
->query("select HEX(AES_ENCRYPT('hogehoge', '暗号化のタネ')) as enc_password")
->row_array()['enc_password'];

なんか乱暴なことした様な気がするけどまあいい。
動くかなじゃなくて動かすんです。

コメント

タイトルとURLをコピーしました