Optimisation de l'instruction IN pour PDO avec MySQL
Lors de la liaison d'un tableau de valeurs à une instruction PDO pour une utilisation dans une instruction IN dans MySQL, il est important de s'assurer que les valeurs sont correctement séparées. Cependant, par défaut, PDO traite l'instruction IN comme une seule chaîne, ce qui peut conduire à des résultats incorrects.
La solution réside dans la construction manuelle de la requête, comme mentionné dans une question précédente. Cependant, ce n'est pas une solution idéale, en particulier pour les requêtes dynamiques avec des listes de taille variable.
Solutions alternatives :
SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE find_in_set(CAST(products.id AS CHAR), :products)
Voici un exemple d'une telle fonction :
CREATE FUNCTION split_str(s TEXT, delim CHAR) RETURNS SET<CHAR> BEGIN RETURN (SELECT explode(s, delim) X FROM DUAL); END
Ensuite, vous pouvez utiliser la fonction dans votre requête :
SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE products.id IN (SELECT X FROM split_str(:products, ','))
Ces solutions alternatives vous permettent de gérer plus efficacement les instructions IN dans PDO avec MySQL, garantissant des résultats précis et optimaux performances.
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!