Uno de los métodos que incluye la clase wpdb es prepare, que permite preparar una consulta a la base de datos para asegurarnos que se ejecute de forma segura.
Su utilización es bastante sencilla — y si hasta ahora no la estás utilizando deberías leer inmediatamente la sección sobre cómo proteger tus consultas ante ataques de inyección SQL — pero hasta hace poco no había ideado una forma sencilla de preparar consultas con cláusulas IN.
Una solución bastante sencilla que podemos aplicar es la siguiente:
// obtener un listado de IDs de entradas "especiales"
// $special_entries = array(1, 3, 5, 8, 13, [...]);
$special_entries = get_option('my_special_entries');
// ¿cuántas condiciones se van a seleccionar?
$how_many = count($special_entries);
// prepara la cantidad adecuada de reemplazos
// si se buscarán strings, el último parámetro sería '%s'
$placeholders = array_fill(0, $how_many, '%d');
// unir los reemplazos con comas
// $format = '%d, %d, %d, %d, %d, [...]'
$format = implode(', ', $placeholders);
// la consulta
$query = "SELECT ID, post_title, post_name, post_parent FROM $wpdb->posts WHERE post_parent IN($format)";
// obtener los resultados de forma segura
$results = $wpdb->get_results( $wpdb->prepare($query, $special_entries) );
2 responses
[…] Sanitizar consultas con cláusulas “IN” con $wpdb en WordPress (0) […]
[…] artículo de Felipe en Yukei con uno de los métodos que puedes utilizar a través de la clase $wpdb, que te permite construir […]