たとえば、次の準備済みステートメントがあるとします。
$sth = $dbh->prepare('SELECT `name` FROM `user` WHERE `user_id` = :user_id');
次のように user_id パラメータをバインドできます。
$sth->bindValue(':user_id', $user_id_value);
そして、SQL インジェクションからも安全です。
ただし、bindValue() は、data_type と呼ばれるオプションのパラメーターでもあり、明示的なデータ型を設定できます。例:
$sth->bindValue(':user_id', $user_id_value, PDO::PARAM_INT);
これにより、user_id が整数になると述べることができます。
私の質問は次のとおりです。SQL インジェクションの有無にかかわらず安全な場合、bindValue で data_type パラメーターを使用するのはなぜですか? データの整合性を強制するためにありますか? 事前にデータを検証している場合、その使用について心配する必要はありますか? 私が考えていなかった、それを使用することの他の利点はありますか?