Я не эксперт по PDO, но могу вспомнить несколько сценариев, в которых параметр data_type полезен и даже необходим.
Выходные параметры
Когда вы определяете выходные или входные / выходные параметры, вы должны указать как тип, так и длину ожидаемого выходного параметра.
Ссылка: http://www.php.net/manual/en/pdo.prepared-statements.php
Пример # 4
$stmt = $dbh->prepare("CALL sp_returns_string(?)");
$stmt->bindParam(1, $return_value, PDO::PARAM_STR, 4000);
Пример # 5
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(?)");
$value = 'hello';
$stmt->bindParam(1, $value, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000);
DBM без неявного приведения
Объясняется в другом ответе на этот вопрос ...
Когда параметр не привязан к преобразуемым данным
Даже базы данных со способностями приведения не всегда могут правильно преобразовать вашу переменную.
Ссылка: Причины для строгого ввода параметров в PDO?
$limit = 1;
$dbh->prepare("SELECT * FROM items LIMIT :limit");
$dbh->bindParam(":limit", $limit, PDO::PARAM_STR);
// Will throw "You have an error in your SQL syntax..."