質問: お世話になります。 入力formで入力してもう数字について、確認画面で見やすくするために、javascript上で3桁のカンマ区切りにしております。 これらの数値をPDOでMYSQLに格納する際にstr_replaceでカンマを消し intval関数でint型にしております。 実際にこれをvar_dumpした場合、数値列として正しい金額を表示します。 ``` $a=1,111,111,111,111; $b=222,222,222,222; $c=666,666,666,666; $a=intval(str_replace(",","",$a)); $b=intval(str_replace(",","",$b)); $c=intval(str_replace(",","",$c)); 一部省略・・・ $stmt->bindValue(':number1',$a,PDO::PARAM_INT); $stmt->bindValue(':number2',$b,PDO::PARAM_INT); $stmt->bindValue(':number3',$c,PDO::PARAM_INT); ``` しかしながら、mysqlに格納された金額を見るとすべて 2147483647 という数字が入っており、これをfetchして出力した結果もこの数字の並びが 出力されてしまい、意図した金額が格納されていなかったことが判明いたしました。 このようになってしまう原因がわからないのですが どなたかお力添えを願います。 よろしくお願いいたします。
回答: 桁あふれが発生しているので、MySQLはINTの最大値をセットしているようです。 BIGINTを使用してください。 https://dev.mysql.com/doc/refman/5.6/ja/integer-types.html