PDOStatement :: bindValue()メソッドは、バインドされた変数のタイプを指定する方法を提供します。
PDOStatement :: bindValue($ parameter、$ value [、$ data_type = PDO :: PARAM_STR ])
データ型を指定する目的は何ですか?デフォルト(PARAM_STR
)のままにすると、データベースは最終的に値を使用する前に適切な型にキャストしますか?
たとえば、INTEGER
フィールドに対して次のクエリがある場合:
INSERT INTO table (integerField) VALUES (?) ;
SELECT * FROM table WHERE integerField = ? ;
そして、PHPで整数をバインドすると、PDOはデフォルトでそれを文字列としてバインドします。これは次のように相当します。
INSERT INTO table (integerField) VALUES ("1") ;
SELECT * FROM table WHERE integerField = "1" ;
SQLデータベース(少なくともMySQL、他のRDBMSでどのように機能するかはわかりません)は、文字列を使用する前に整数に変換する方法を知っているため、これは問題なく機能します。
バインドされた型付きパラメーターと文字列に違いが生じるユースケースは何ですか?