Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

manolegal

Update com Array

Recommended Posts

Olá Amigos

Preciso realizar um Update onde campos da tabela sejam iguais aos valores contidos em um array.

Array ( [0] => 38 [1] => 35 ) Array ( [0] => 38 [1] => 35 ) 

Caso tenha selecionado, por exemplo 38 e 35 respectivamente, ao tentar update está gravando levando em consideração somente o menor valor (35). Meu código update:

for($i=0; $i<count($meu_array); $i++) {
$Sql = "UPDATE minha_tabela
SET campo_atualizar
WHERE minha_tabela.meu_id = '$meu_array[$i]'";
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você quer fazer um update somente do 35 daí? Dá pra ordenar o array de forma crescente e pegar o primeiro valor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade haverá atualização de dados onde valor for 35 e também onde valor for 38.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Imprima as consultas geradas.

 

Se o mysql_query estiver fora do FOR, não vai funcionar mesmo. Além da SQL, o script que a executa deve estar dentro do for também.

 

PS: Dizem as lendas que você pode executar as duas em uma consulta só também. Desta maneira, você executa uma consulta só para vários IDs.

UPDATE tabela WHERE id IN (35, 38)

* Não garanto que esta seja a sintaxe correta. Sei que existe, mas caso não funcione, você precisará pesquisar um pouco como é o funcionamento.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Os scripts estão todos dentro do for.

Em um update com 01 valor de comparação eu faria:

UPDATE minha_tabela ...
WHERE minha_tabela.meu_id = '$minha_variavel'

Onde por exemplo, '$minha_variavel' recebe o valor de "35".

 

 

O que preciso é atualizar minha tabela, sendo que a minha variável (array) recebe mais de 01 valor (exemplo 35, 38, 40, etc), ou seja atualizar todos os campos da tabela onde o id de cada linha da tabela é igual a qualquer um desses valores da array.

Teoricamente falando seria:

UPDATE minha_tabela ...
WHERE minha_tabela.meu_id = '35'

UPDATE minha_tabela ...
WHERE minha_tabela.meu_id = '38'

UPDATE minha_tabela ...
WHERE minha_tabela.meu_id = '40'

Tentei da seguinte forma, mas atualiza todos os campos levando em consideração SOMENTE um valor do array (menor valor).

<td><select name="meu_array[]" id="meu_array[]"

$Sql = "UPDATE minha_tabela
SET campo_atualizar
WHERE minha_tabela.meu_id = '$meu_array[$i]'";

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema estava no Update. Fiz da seguinte forma e resolvi:

for($i=0; $i<count($meu_array); $i++) {
$Sql = "UPDATE minha_tabela
SET campo_atualizar = $variavel_campo_atualizar
WHERE id_controle_minha_tabela
IN (SELECT id_controle_minha_tabela
FROM minha_tabela
WHERE minha_tabela.meu_id = '$meu_array[$i]')"; }

Obrigado a todos pela ajuda. Problema Resolvido.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.