Fórum Update banco de dados sql com vários campos e condições distintas para atualizar campos distintos. #608114
12/02/2020
0
A questão é a seguinte: preciso fazer um update nesta tabela para atualizar para "null" determinados campos sob determinadas condições para cada campo individualmente em uma mesma linha. Por exemplo:
Atualizar o Campo1 para "null" quando os inputs dos campos "id" e "campo" corresponderem ao id da linha da tabela e o campo corresponder ao valor registrado no Campo1 daquela linha. Tenho o seguinte código:
"UPDATE minha_tabela SET Campo1=''NULL'' WHERE id="$id'' and Campo1=''$campo''";
Blz" Atualiza para "null" o Campo1 se o registro nesse campo for igual ao input "campo" e o id="id" da linha. Mas e como atualizar os Campos2, 3, 4, etc... ??
Já tentei:
"UPDATE minha_tabela SET Campo1=''NULL'' WHERE id="$id'' and Campo1=''$campo''";
"UPDATE minha_tabela SET Campo2=''NULL'' WHERE id="$id'' and Campo2=''$campo''";
"UPDATE minha_tabela SET Campo3=''NULL'' WHERE id="$id'' and Campo3=''$campo''";
etc... mas não funcionou.
É possível fazer esse update em uma única instrução? Se sim, poderia me dar um exemplo de como ficaria o código?
Obrigada!

Mary
Curtir tópico
+ 0Posts
14/02/2020
Gustavo
Mostra também o código PHP que você tá usando.
Gostei + 0
14/02/2020
Mary
Mostra também o código PHP que você tá usando.
Olá Gustavo, tudo bem? A tabela é algo assim:
id campo1 campo2 campo3 campo4 código_cliente nome_da_empresa
1 aaaaaa bbbbbb ccccccc ddddddd 123456 Empresa Um LTDA
2 eeeeee ffffffffff ggggggg hhhhhhh 654321 Empresa Dois LTDA
3 iiiiiiiiiiiii jjjjjjjjjjjjjj kkkkkkkk llllllllllllllll 147258 Empresa Tres Ltda
Código PHP:
<?php
$campo = filter_input(INPUT_POST, ''campo'', FILTER_SANITIZE_STRING);
$codigocliente = filter_input(INPUT_POST, ''codigocliente'', FILTER_SANITIZE_STRING);
"UPDATE minha_tabela SET campo1="NULL" WHERE codigo_cliente=''$codigocliente'' AND campo1=''$campo''":
?>
Até aqui funciona: quando a variável $campo recebe o valor aaaaaa e a variável $codigocliente recebe o valor 123456 o campo 1 da tabela fica NULL.
A questáo é: como fazer a mesma coisa para alterar para NULL o campo2 quando o valor da variável $campo for bbbbbb e o valor da variável $codigocliente for 123456, e assim por diante...
Deu pra entender? Não sei se consegui me expressar melhor agora...
:)
Obrigada!
Gostei + 0
14/02/2020
Emerson Nascimento
1 2 3 4 | UPDATE minha_tabela SET campo1=( case when codigo_cliente = '' $codigocliente '' AND campo1= '' $campo '' then NULL else campo1 end ), campo2=( case when codigo_cliente = '' $codigocliente '' AND campo2= '' $campo '' then NULL else campo2 end ), campo3=( case when codigo_cliente = '' $codigocliente '' AND campo3= '' $campo '' then NULL else campo3 end ), |
...
Até o campo16
Dá até pra montar o comando num loop
Gostei + 0
14/02/2020
Emerson Nascimento
1 2 3 4 5 6 | UPDATE minha_tabela SET campo1=( case when campo1= '' $campo '' then NULL else campo1 end ), campo2=( case when campo2= '' $campo '' then NULL else campo2 end ), campo3=( case when campo3= '' $campo '' then NULL else campo3 end ), [até o campo16] WHERE codigo_cliente = '' $codigocliente '' |
Gostei + 0
15/02/2020
Mary
Gostei + 0
17/02/2020
Mary
1 2 3 4 5 6 | UPDATE minha_tabela SET campo1=( case when campo1= '' $campo '' then NULL else campo1 end ), campo2=( case when campo2= '' $campo '' then NULL else campo2 end ), campo3=( case when campo3= '' $campo '' then NULL else campo3 end ), [até o campo16] WHERE codigo_cliente = '' $codigocliente '' |
Bom dia, Emerson,
Fiz o teste com apenas 4 campos (para ver se dava certo) mas não funciona. Quando submeto o formulário de teste, simplesmente me retorna uma página em branco, tipo um erro de php. O código completo ficou montado exatamente assim:
session_cache_expire(30);
session_start();
include('verifica_login.php');
include_once("connect.php");
$code = filter_input(INPUT_POST, 'code', FILTER_SANITIZE_STRING);
$campo = filter_input(INPUT_POST, 'campo', FILTER_SANITIZE_STRING);
$result = "UPDATE minha_tabela SET
campo1=(case when campo1= "$campo" then NULL else campo1 end),
campo2=(case when campo2= "$campo" then NULL else campo2 end),
campo3=(case when campo3= "$campo" then NULL else campo3 end),
campo4=(case when campo4= "$campo" then NULL else campo4 end),
WHERE code = "$code"";
$resultado = mysqli_query($connect, $result);
if(mysqli_affected_rows($connect)) {
$_SESSION['msg'] = "<p style='color: lime; padding:0;'>Sucesso!</p><br/>";
header("Location: minha_pagina.php");
}else{
$_SESSION['msg'] = "<p style='color: red; padding:0;'>Erroe!</p>";
header("Location: minha_paginat.php");
}
Fiz algo errado? Algum detalhe no código?
Obrigada! :)
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)