frei

旧「anney's room」からブログ「frei」だけ引っ越し&残しました

mysql_insertid。

ども。

仕事中、作業に専念している間、隣の同僚さんから

「男前モード」と呼ばれる、あにやまです(笑)

さて、まだまだ深いコードを追いつつ

リファクタ後のスーパークラスも完成させたりしてたのですが。

金曜日、DBI で MySQL に接続した後、mysql_insertid を取り出したら

値が undef になってて、予想外の動きにビックリ。

…という現象を、

気の毒にも私の作ったスーパークラスにより

なんの説明もなく、同僚さんに味わわせてしもた。ごめん m(_ _)m

しかもそれを、Test::More で テストしてもらってて

ok の対象に mysql_insertid の値を設定してもらったのだけど。

どーしても、そこでテストでコケると言うので

調べてみたら、確かに値は undef。

ググってみたら auto_increment を何処にも設定してないテーブルだと

mysql_insertid には値が入らない事がわかった。なるほどー。

ちなみに SELECT LAST_INSERT_ID(); だか

SHOW TABLE STATUS LIKE 'テーブル名'; で

その値が見れたりするらしいのだけど。

後者で見ると値は NULL。

あー、だから undef が返るのかー…と納得しつつも

Test::More じゃ、どうやって仕掛けたらいいんだろなー…と思ってたら簡単だった。orz

ok ! $mysql_insertid;

※$mysql_insertid に mysql_insertid の値を入れてます

・・・そりゃそうだ。

ちなみに

ok ! defined $mysql_insertid;

…だとテスト失敗になりました。

あー、なんか毎日作業がバタバタあって時間が足りないなー。

いろいろ勉強不足な部分があるから

この土日で、集中して勉強して挽回せななー。