Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Tenho um formulário com vários inputs, porém, algumas desses inputs não são obrigatórios.
Quando o usuário submete o formulário, eu faço o INSERT.
INSERT INTO tabela (campo1, campo2, campo3) VALUES ('".$_POST["campo1"]."', '".$_POST["campo2"]."', '".$_POST["campo3"]."');
Até aí tudo bem.
O que eu quero saber é o seguinte.
O MYSQL só atribui NULL automaticamente para um campo, quando ele não é passado na query, ou seja especificado de forma explícita NULL. Exemplo:
INSERT INTO tabela (campo1, campo2, campo3) VALUES ('".$_POST["campo1"]."', '".$_POST["campo2"]."', NULL);
Só que tenho um problema.
Se o campo3 não for preenchido pelo usuário, eu gostaria que fosse assumido NULL pelo MySQL, porém, no insert ele passa '' (vazio), por que o usuário não preencheu nada.
Se eu fizer um if ($_POST["campo3"] == "") { $_POST["campo3"] = NULL; }, também não resolve, pois no INSERT eu utilizo ' (aspas simples), por ser string. No caso, como eu faria, visto que STRINGS obrigatoriamente devem conter ASPAS, então não posso simplesmente retirar as ASPAS da QUERY.
Sei que há possibilidade de utilização do REPLACE no MySQL, porém, teria algum outro método mais simples?
Pensei em criar uma variável $query e ir gerando a consulta nela, concatenando apenas os campos que foram preenchidos, dessa forma, o que não foi preenchido, não entraria na QUERY, então o MySQL atribuiria NULL.
Porém, ainda insisto na pergunta. Existe alguma outra forma mais simples?
Desde já obrigado à todos.
Carregando comentários...