Salut,
Je rencontre une difficulté pour lier une même valeur plusieurs fois dans une requête.
Par exemple :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $sql = 'SELECT * FROM table WHERE colonne1 = :valeur OR colonne2 = :valeur;'; $stmt = $pdo->prepare($sql); $stmt->bindValue(':valeur', $valeur);
Ceci fonctionne très bien. Ca ne fonctionnait pas avant PHP 5.2.1 mais le bug a été corrigé depuis. Je suis en PHP 5.4.10.
Voulant me passer de l'émulation des requêtes préparées par PDO et passer directement par le système de MySQL, je désactive l'attribut qui va permettre ça :
Code php : Sélectionner tout - Visualiser dans une fenêtre à part $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, 0);
Et à ce moment-là, la requête ci-dessus ne fonctionne plus et j'ai l'erreur "Invalid parameter number" (typiquement l'erreur avant la correction du bug des versions antérieures à la 5.2.1).
Une solution serait bien évidemment de modifier le code pour ajouter autant de bind que de paramètres. Mais ça signifie passer dans tous les fichiers pour ne pas louper une seule requête de ce genre ... ce qui est assez risqué.
Donc si quelqu'un a une autre solution ...
Merci !
Partager