ここはちょっと見せられない

ぜったいぜったい見せられない

PDOException: SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for integer

2日程悩んだ。

ZendFrameworkでPDO使うと、bigint に8bit整数を入れようとして、PHP側でfloatで持っているとエラーが出ると言うお話。

http://bugs.php.net/bug.php?id=48924

DBに渡す時には無理やり、

$hoge = sprintf("%.0F",$fuga);


などして文字列型にしちゃってみると上手くいったりする。
ただの回避策だけど、自分のサーバーじゃないし、勝手にバージョンアップできないんで、回避策で逃げておくしかない。

ちなみに、(string) などでキャストすると、元が float なので、E+ が付いちゃってここで期待してるようなキャストはなされない。