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;
…だとテスト失敗になりました。
あー、なんか毎日作業がバタバタあって時間が足りないなー。
いろいろ勉強不足な部分があるから
この土日で、集中して勉強して挽回せななー。