Manejo de consultas "DÓNDE... EN" con PDO
Al utilizar PDO para el acceso a la base de datos, administrar consultas con "DÓNDE... Las cláusulas IN" pueden plantear un desafío. Considere el siguiente escenario: necesita eliminar entradas de una tabla de base de datos según una lista de elementos de formulario marcados, representados como "$idlist" con longitud y contenido variables (por ejemplo, '260,201,221,216,217,169,210,212,213').
Inicialmente, usar una consulta como la siguiente puede parecer lógico:
$query = "DELETE from `foo` WHERE `id` IN (:idlist)";
Sin embargo, este enfoque solo elimina la primera ID. Las comas y los ID posteriores se ignoran por error.
Para superar este problema, es fundamental comprender el comportamiento de las declaraciones preparadas en PDO. Los valores se pueden vincular a marcadores de posición mediante parámetros numerados o con nombre. Para una consulta "DÓNDE... EN", cada ID de la lista debe tener su propio marcador de posición.
La solución requiere un enfoque dinámico:
$idlist = array('260', '201', '221', '216', '217', '169', '210', '212', '213');
$questionmarks = str_repeat("?,", count($idlist) - 1) . "?";
$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");
A continuación, vincule cada ID a un signo de interrogación correspondiente:
for ($i = 0; $i bindParam($i 1, $idlist[$i]);
}
Este método garantiza que cada elemento de la lista esté vinculado correctamente a un marcador de posición, lo que permite que la consulta elimine correctamente los registros deseados.
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