int型の変数をPOST送信して、MySQLのint型カラムへ(SQLで型変換させずに)格納するためには、事前にint型へ変換することが必要?

投稿者: Anonymous

最終的にやりたいこと
・int型の変数をPOST送信して、MySQLのint型カラムへ格納したい

最近、気が付いたこと
・POSTで送られた値は全て文字列型として扱われる

質問1
・SQLで型変換させないためには、予めint型へ変換することが必要でしょうか?

質問2
・もしそうだとしたら、その場合の変換は下記何れ(もしくはそれ以外?)で行うのでしょうか?
・intval()と(int)と(integer)では、何が違うのでしょうか?

解決

質問1

POSTされた値$valueを事前にチェックし、数値として変換できない値が入っていた場合にエラー処理などを行っているのであればやらなくても動きます。
が、バグ混入の危険を回避するために(数値であることを保証するために)やっておきましょう。

(int)$value などとしているのは 数値以外のものが$valueに入っている場合、文字列の先頭から数字以外が現れるまでを数値として扱いたいからです。
($valueが空文字列であった場合や全て数字以外が入っていた場合に0として扱いたい場合も)

質問2
結果として数値と判断できる値になるのであれば何を使ってもいいです。
intval()と(int)と(integer) に関しては、取り扱う数値の基数が10進数であればどれを使用しても同じ結果になります。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *