Requêtes préparées et filtrage des paramètres : refus ou cast ?
Pour les requêtes préparées, avec PDO, on peut mettre en place, lors du binding des arguments, un filtrage sur le type attendu.
La documentation donne des exemples pour les méthodes
/* Exécution d'une requête préparée en liant des variables PHP */
$calories = 150;
$couleur = 'rouge';
$sth = $dbh->prepare('SELECT nom, couleur, calories
FROM fruit
WHERE calories bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':couleur', $couleur, PDO::PARAM_STR, 12);
$sth->execute();
Que se passe-t-il lorsque j’envoie un mauvais type ?
PDO s’occupe de caster les variables pour qu’elles correspondent au type attendu.
avec PARAM_INT, si on propose une chaîne, elle devient la valeur 0
avec PARAM_STR, 15 (longueur max de chaîne), la chaîne est tronquée à 15 caractères.
