Update banco de dados sql com vários campos e condições distintas para atualizar campos distintos.
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
Posts
14/02/2020
Gustavo
Mostra também o código PHP que você tá usando.
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!
14/02/2020
Emerson Nascimento
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
14/02/2020
Emerson Nascimento
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''
15/02/2020
Mary
17/02/2020
Mary
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! :)
Clique aqui para fazer login e interagir na Comunidade :)