"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo manejar consultas \"DÓNDE... EN\" con PDO al eliminar varios registros?

¿Cómo manejar consultas \"DÓNDE... EN\" con PDO al eliminar varios registros?

Publicado el 2024-11-13
Navegar:803

How to Handle \

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.

Último tutorial Más>

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