Page 1 sur 1

pdo et multiple value

Posté : 18 mars 2011, 12:04
par telnes
hello

petite question / best practice ...


lorsque l'on exécute une requête préparé avec PDO ou un paramètre va contenir plusieur valeur, de base ca pose un souci.

exemple :
$pdoReq = 'SELECT * FROM password WHERE idApplication IN(:applicationFilter)';
si :applicationFilter est égale à 1 (id)

pdo va faire
'SELECT * FROM password WHERE idApplication IN("1")';
la ca roule

si :applicationFilter est égale à 1,2,3

pdo va faire (un truc du genre)
'SELECT * FROM password WHERE idApplication IN("1,2,3")';
et la ... c'est pas bon :/

car on veux
'SELECT * FROM password WHERE idApplication IN(1,2,3)'; 
j'ai pas trouvé de bindParam qui dit n'échappe pas la chaine

donc la solution est de faire un str_replace de :applicationFilter par la chaine 1,2,3 dans la requete $pdoReq (préparée)

mais est ca la solution ou en existe il une autre ??

merci

Re: pdo et multiple value

Posté : 18 mars 2011, 13:10
par moogli
Salut

Dans ton cas faut un mettre le dernier parametre du bind pour utiliser des entiers

Car les guillemets autour d'un entier ca passe mais parce le sgbd est sympa il ne devrait y en avoir ;)

Apres je sais comment pdo va gèrer les valeurs multiples dans le cas du in :/


@+

Re: pdo et multiple value

Posté : 18 mars 2011, 14:31
par telnes
hello

il quote la chaine d'entier séparé par des virgules et ca met la grouille.

en plus pour un chiffre tu peut mettre un bind à PDO::PARAM_INT mais pour une chaine 1,2,3 ... c'est plus très INT et de plus ca marche pas avec le bind.

++