新宿の会社の仕事でPEAR::MDB2を使ってDBを更新するスクリプトを書いたら、思わぬ点ではまったので念のためメモ。 今回はDBがPostgreSQLだったのだが、prepare()→execute()を繰り返し使うスクリプトを動かしていると、稀にprepared statementの名前が衝突してスクリプトが異常終了してしまうという問題が発生。 そんでよくよく原因を調べてみると、MDB2のVer.2.41(最新のstable版)ではここが $statement_name = sprintf($this->options['statement_format'], $this->phptype, md5( time() + rand())); $statement_name = strtolower($statement_name); となってるのだが、ここの部分のMD5がたまに衝突してし