Gestion des instructions préparées avec la condition IN() dans WordPress
WordPress fournit des instructions préparées pour se protéger contre les attaques par injection SQL et améliorer les performances des requêtes. Cependant, l'utilisation de la condition IN() avec plusieurs valeurs dans une chaîne peut présenter des défis.
Énoncé du problème :
Considérez la situation suivante :
$villes = '"paris","fes","rabat"'; $sql = 'SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN(%s)'; $query = $wpdb->prepare($sql, $villes);
Ce code n'échappe pas correctement à la chaîne, ce qui entraîne une seule chaîne avec des guillemets doubles échappés :
SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN('\"paris\",\"fes\",\"rabat\"')
Solution :
Pour correctement implémentez une instruction préparée avec plusieurs valeurs dans WordPress, suivez ces étapes :
// Create an array of the values to use in the list $villes = array('paris', 'fes', 'rabat'); // Generate the SQL statement. // Number of %s items based on length of $villes array $sql = " SELECT DISTINCT telecopie FROM `comptage_fax` WHERE `ville` IN(" . implode(', ', array_fill(0, count($villes), '%s')) . ") "; // Call $wpdb->prepare passing the values of the array as separate arguments $query = call_user_func_array(array($wpdb, 'prepare'), array_merge(array($sql), $villes));
Fonctions PHP utilisées :
Cette approche garantit que les valeurs de $villes sont correctement échappées et traitées comme des valeurs distinctes dans la condition IN().
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3