"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como lidar com consultas "WHERE... IN" com PDO ao excluir vários registros?

Como lidar com consultas "WHERE... IN" com PDO ao excluir vários registros?

Publicado em 13/11/2024
Navegar:953

How to Handle \

Tratamento de consultas "WHERE... IN" com PDO

Ao usar PDO para acesso ao banco de dados, gerenciamento de consultas com "WHERE... As cláusulas IN" podem representar um desafio. Considere o seguinte cenário: você precisa remover entradas de uma tabela de banco de dados com base em uma lista de itens de formulário verificados, representados como "$idlist" com comprimento e conteúdo variáveis ​​(por exemplo, '260.201.221.216.217.169.210.212.213').

Inicialmente, usar uma consulta como a abaixo pode parecer lógico:

$query = "DELETE from `foo` WHERE `id` IN (:idlist)";

No entanto, esta abordagem exclui apenas o primeiro ID. As vírgulas e os IDs subsequentes são ignorados por engano.

Para superar esse problema, é crucial entender o comportamento das instruções preparadas no PDO. Os valores podem ser vinculados a espaços reservados usando parâmetros numerados ou nomeados. Para uma consulta "WHERE... IN", cada ID na lista deve ter seu próprio espaço reservado.

A solução requer uma abordagem dinâmica:

$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)");

Em seguida, vincule cada ID a um ponto de interrogação correspondente:

for ($i = 0; $i bindParam($i   1, $idlist[$i]);
}

Este método garante que cada item da lista esteja devidamente vinculado a um espaço reservado, permitindo que a consulta exclua com sucesso os registros pretendidos.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3