Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia,
Preciso de uma ajuda para excluir de uma tabela valores que não estejam dentro de um array.
Exemplo, tenho um array $areas que tem cinco registros. Quero excluir de uma tabela todos os valores que não sejam esses cinco.
$areas = isset($_POST['emp_sup']) ? $_POST['emp_sup'] : NULL;
$count = count(array_values($areas));
for($i=0; $i < $count; $i++){
//aqui deletar todos os registros diferente do que está passando em $areas[$i]
}
Se eu usar o código acima a cada passagem no for vai deletar todos os registros que sejam diferentes de $areas[$i], inclusive os que estão dentro do array.
O que eu preciso é que se o registro for igual a algum valor do array, que seja mantido no banco.
>
Faça assim:
$ids = implode(',',array_values($areas));
mysql_query("DELETE FROM tabela WHERE campo IN ({$ids})");
usando IN ele exclui os que estão no array?
se for entao deveria ser
mysql_query("DELETE FROM tabela WHERE campo NOT IN ({$ids})");
pois ele quer excluir de uma tabela valores que não estejam dentro de um array.
>
usando IN ele exclui os que estão no array?
se for entao deveria ser
mysql_query("DELETE FROM tabela WHERE campo NOT IN ({$ids})");
pois ele quer excluir de uma tabela valores que não estejam dentro de um array.
Exatamente, mesmo com o código dele eu já havia entendido que era só usar NOT IN.
Resolveu meu problema,
Obrigado.
Faça assim: