Manejo de declaraciones preparadas con condición IN() en WordPress
WordPress proporciona declaraciones preparadas para proteger contra ataques de inyección SQL y mejorar el rendimiento de las consultas. Sin embargo, usar la condición IN() con múltiples valores en una cadena puede presentar desafíos.
Declaración del problema:
Considere la siguiente situación:
$villes = '"paris","fes","rabat"'; $sql = 'SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN(%s)'; $query = $wpdb->prepare($sql, $villes);
Este código no escapa correctamente la cadena, lo que da como resultado una sola cadena con comillas dobles escapadas:
SELECT distinct telecopie FROM `comptage_fax` WHERE `ville` IN('\"paris\",\"fes\",\"rabat\"')
Solución:
Para corregir implemente una declaración preparada con múltiples valores en WordPress, siga estos pasos:
// 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));
Funciones PHP utilizadas:
Este enfoque garantiza que los valores en $villes se escapen correctamente y se traten como valores separados en la condición IN().
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3