22163


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

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

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

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


CC BY-SA 3.0
2016-02-16T05:06:28.783
22153
2016-02-16T08:55:38.947
7886
question
php
int型の変数をPOST送信して、MySQLのint型カラムへ(SQLで型変換させずに)格納するためには、事前にint型へ変換することが必要？


質問1

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

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

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


CC BY-SA 3.0
2016-02-16T08:18:04.063
22163
2016-02-16T08:55:38.947
2016-02-16T08:55:38.947
7343
7343
22153
answer