Utilisation PDO::ATTR_EMULATE_PREPARES dans une connexion PDO
Bjr
question
doit-on mettre cette propriété pour PDO à savoir PDO::ATTR_EMULATE_PREPARES à false ou à true?
du moins pour les versions récentes de php et mysql
certains conseillent de mettre à false ...
y a-t-il une influence sur la performance et/ou la sécurité?
d'autre part,
j'ai déjà eu des problèmes avec fetch et fetchAll pour un select ...
récupération d'un champ primary key integer en string avec le statement ?
influence de cet attribut PDO::ATTR_EMULATE_PREPARES sur un tel comportement ...
merci d'avance
A+
complément d'informations
je complète ce message
dans mon cas
en mettant PDO::ATTR_EMULATE_PREPARES à true
et en faisant un fetch avec la paramètre FETCH_ASSOC (récupération d'un tableau associatif avec les index correspondant aux noms des champs de la table mysql)
je récupère un tableau avec les données en type string aussi bien pour les keys (qui sont en integer dans la structure SQL)
en mettant PDO::ATTR_EMULATE_PREPARES à false
et en faisant à nouveau un fetch avec même paramètre
je récupère un tableau et les types sont corrects int pour les keys et string pour des varchar par exemple
et en faisant un test de performance
requête un peu plus longue que pour ATTR_EMULATE_PREPARES à true
(ce qui me paraît normal)
explication?
quelqu'un a eu le même cas ...
Donc si je laisse ATTR_EMULATE_PREPARES à true
je dois caster les valeurs récupérées dans le tableau
ou utiliser FETCH_FUNC avec une fonction de remplacement/transformation
ce qui est un peu plus lent niveau performance (ce qui est aussi normal)
A+