Passer un tableau de paramètres PDO avec la clause LIMIT
Introduction :
Lorsque vous travaillez avec PDO , il peut être difficile de transmettre un tableau de paramètres et d'utiliser simultanément la clause LIMIT. Cet article fournit une solution à ce problème.
Énoncé du problème :
Étant donné la requête SQL suivante :
SELECT * FROM table WHERE id LIKE CONCAT('%', :id, '%') LIMIT :limit1, :limit2
Vous souhaitez exécuter ceci requête utilisant un tableau de paramètres, comme indiqué ci-dessous :
$stmt->execute($array);
Cependant, l'utilisation de la méthode bindParam() pour les paramètres LIMIT (:limit1 et :limit2) entraîne une erreur.
Solution :
La solution réside dans la désactivation du paramètre PDO par défaut de PDO::ATTR_EMULATE_PREPARES. Ce paramètre demande essentiellement à PDO d'émuler les instructions préparées, plutôt que de les utiliser de manière native.
Pour désactiver ce paramètre :
$pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
Une fois ce paramètre désactivé, la requête peut être préparée et exécutée avec le tableau de paramètres, y compris les valeurs LIMIT :
$stmt = $pdo->prepare($sql); $stmt->execute(array(5)); //works!
Implications :
La désactivation de PDO::ATTR_EMULATE_PREPARES peut améliorer les performances, car elle supprime la surcharge d'émulation préparée déclarations. Cependant, il convient de noter que ce paramètre est activé par défaut pour des raisons de performances.
Ressources supplémentaires :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!