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 pessoal.
Atualizei para a versão mais atual do mysql e estou tendo problemas.
Vi que agora o mysql não aceita mais que a variavel venha em branco e que eu tenho que substituir o branco por null.
tentei assim mais não funciona:
if(empty($_POST['termino'])) {
$termino = "NULL";
} else {
$termino = $_POST['termino'];
}
if(empty($_POST['dataencerramento'])) {
$dataencerramento = "NULL";
} else {
$dataencerramento = $_POST['dataencerramento'];
}
if(empty($_POST['dataentrega'])) {
$dataentrega = "NULL";
} else {
$dataentrega = $_POST['dataentrega'];
}
$sql = mysqli_query($con, "update pacotes SET id_turma='$id_turma', dataabertura='$dataabertura', termino='$termino', dataencerramento='$dataencerramentofinal', dataentrega='$dataentrega', desconto='$desconto' where id_pacote = '$id'") or die (mysqli_error($con));
As outras variaveis eu não trouxe mais tem elas pois da erro quando alguma data vem em branco e preciso colocar ela como nullUsa PDO você terá menos problemas.
Obs.: não ganho nada com isso, é apenas uma indicação no qual eu aprendi bastante sobre php/mysql etc. https://b7web.com.br/php/
Thalles fiz uma query aqui rapidamente com pdo é da o mesmo problema quando a data vem vazia.
include_once 'conexao.php';
$nome = (isset($_POST['nome'])) ? $_POST['nome'] : NULL;
$cpfcnpj = (isset($_POST['cpfcnpj'])) ? $_POST['cpfcnpj'] : NULL;
$dataprimeiro = (isset($_POST['dataprimeiro'])) ? $_POST['dataprimeiro'] : NULL;
$result_msg_cont = "INSERT INTO clientes (nome, cpfcnpj, dataprimeiro) VALUES (:nome, :cpfcnpj, :dataprimeiro)";
$insert_msg_cont = $conn->prepare($result_msg_cont);
$insert_msg_cont->bindValue(':nome', $nome);
$insert_msg_cont->bindValue(':cpfcnpj', $cpfcnpj);
$insert_msg_cont->bindValue(':dataprimeiro', $dataprimeiro);
if($insert_msg_cont->execute()){
echo "Gravado";
}else{
echo "Não Gravado";
echo "\nPDOStatement::errorInfo():\n";
$arr = $insert_msg_cont->errorInfo();
print_r($arr);
}clickanapolis
Na verdade você precisa ver a definição das suas tabelas em seu banco de dados.
Pois em nenhuma versão do MySQL existe restrição para campos com brancos.
Exemplo:
1
cd_entry
int(25)
NULO (Não)
AUTO_INCREMENT
2
cd_cliente
int(10)
NULO (Não)
3
tp_produto
varchar(20)
latin1_swedish_ci
NULO (Sim)
4
tp_selecao
varchar(15)
latin1_swedish_ci
NULO (Sim)
5
tp_outros
varchar(75)
latin1_swedish_ci
NULO (Sim)
Para a tabela acima tenho que obrigatóriamente colocar no meu INSERT o VALUE (NULL) para o primeiro valor CD_ENTRY, pois ele é autoincrement, já para o campo CD_CLIENTE eu não posso atribuir um valor NULO, então preciso colocar o VALUE (0) para ele pois se trata de um campo numérico e não consigo colocar spaces (vazio).
Já para os outros campos que tem a opção de NULO = SIM, eu posso atribuir os valores VALUE(NULL) para eles, pois permitem ser NULOS, os valores VALUE(' ') vazio, que é diferente de NULO e claro, posso também atribuir valores VALUE('Produto1', 'Selecao1', 'Outros1') ou valores como SPACES.
Exemplo dos INSERT
INSERT INTO TB_EXEMPLO (cd_entry, cd_cliente, tp_produto, tp_selecao, tp_outros) VALUES (NULL, 1, 'Produto1', '', NULL);
INSERT INTO TB_EXEMPLO (cd_entry, cd_cliente, tp_produto, tp_selecao, tp_outros) VALUES (NULL, 2, 'Produto2', 'Selecao1', '');
INSERT INTO TB_EXEMPLO (cd_entry, cd_cliente, tp_produto, tp_selecao, tp_outros) VALUES (NULL, 3, 'Produto3', 'Selecao2', 'VL');
INSERT INTO TB_EXEMPLO (cd_entry, cd_cliente, tp_produto, tp_selecao, tp_outros) VALUES (NULL, 4, '', '', '');
INSERT INTO TB_EXEMPLO (cd_entry, cd_cliente, tp_produto, tp_selecao, tp_outros) VALUES (NULL, 5, NULL, NULL, NULL);
MINHA TABELA; repare que sua dúvida pelo NULL se resumi na imagem abaixo na coluna TP_OUTROS onde tenho representado abaixo os valores VAZIO registros de 1 até 6, NULL registro 7 e com valores registros de 8 até 10.

Então, no seu caso, acho que você precisa ver o especificado em suas tabelas.
MAS de qualquer forma, caso você queira colocar um valor NULL basta você atribuir o valor NULL sem aspas para a sua variável.
Exemplo: $tipo_produto = NULL;
Espero que a explicação fique clara e que eu tenha lhe ajudado de certa forma.
"NULL" é diferente de NULL.
"NULL" é uma string.
NULL é uma variável sem valor.
Precisa verificar o que o seu campo do banco espera, se pode ser NULL ou não.