rpmarques 3 Denunciar post Postado Setembro 15, 2016 Buenas, retornei depois de um tempo fora do mundo digital, estou aqui uma dúvida simples, mas não consigui solucionar, estou tentando gravar em um campo tipo data só que sem conteúdo, vazio, só que me retorna o seguinte erro: Invalid datetime format: 1292 Incorrect date value: '' for column 'data_pg' at row 1 como vcs fazem pra gravar um campo data como vazio? Compartilhar este post Link para o post Compartilhar em outros sites
ESerra 744 Denunciar post Postado Setembro 15, 2016 Você definiu algum valor para o campo como "not null"? Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 15, 2016 Não se grava data em BRANCO, a não ser que o campo esteja definido como NULL. Do contrário, você deverá obedecer o formato "0000-00-00" Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Setembro 16, 2016 Ele esta definido como default NULL, mas mesmo assim, não me deixa. Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 16, 2016 Você precisa setar ele como NULO e definir também o valor padrão como NULL Compartilhar este post Link para o post Compartilhar em outros sites
WagnerFilho 0 Denunciar post Postado Setembro 16, 2016 Tente assim: $data = date('Y/m/d'); 'data' => $data, Base de dados: `data` DATE NULL DEFAULT NULL, Compartilhar este post Link para o post Compartilhar em outros sites
rpmarques 3 Denunciar post Postado Setembro 16, 2016 mas wagner, eu não quero gravar nada neste campo ainda, e a base esta como tu postou ali... Compartilhar este post Link para o post Compartilhar em outros sites
WagnerFilho 0 Denunciar post Postado Setembro 16, 2016 Tente assim Insert: $insere = 'INSERT INTO tabela (coluna_1, coluna_2, coluna_3) VALUES ("'.$string_1.'", "'.$string_2.'", '.$data.')'; if(is_null($data)){ $data = 'NULL'; } else{ $dataFormato = explode("/",$data); $data = '"'.$dataFormato[2].'-'.$dataFormato[1].'-'.$dataFormato[0].'"'; } Compartilhar este post Link para o post Compartilhar em outros sites
Alaerte Gabriel 662 Denunciar post Postado Setembro 16, 2016 Você quem está fazendo algo errado. O seu próprio erro diz que o valor 1292 é incorreto para o tipo date, ou seja, de alguma forma esse valor está tentando ser inserido ao banco de dados. Se seu campo estiver com as configurações adequadas, não há como dar erro. Tente assim Insert: $insere = 'INSERT INTO tabela (coluna_1, coluna_2, coluna_3) VALUES ("'.$string_1.'", "'.$string_2.'", '.$data.')'; if(is_null($data)){ $data = 'NULL'; } else{ $dataFormato = explode("/",$data); $data = '"'.$dataFormato[2].'/'.$dataFormato[1].'/'.$dataFormato[0].'"'; } O valor correto para gravação no campo date é o padrão americano 0000-00-00, da forma como você sugeriu vai dar erro de padrão incorreto da mesma forma. Compartilhar este post Link para o post Compartilhar em outros sites
WagnerFilho 0 Denunciar post Postado Setembro 16, 2016 Mas daí, basta colocar num bloco try E também corrigi o o caractere / try { $data = explode('/', $data); $data = $data[2].'-'.$data[1].'-'.$data[0]; } catch (Exception $e) { $data = date('Y/m/d'); } Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Setembro 16, 2016 Mas daí, basta colocar num bloco try E também corrigi o o caractere / try { $data = explode('/', $data); $data = $data[2].'-'.$data[1].'-'.$data[0]; } catch (Exception $e) { $data = date('Y/m/d'); } Meu querido! :blink: Estendendo exceções O PHP 5 possui um modelo de exceções similar ao de outras linguagens de programação. Uma exceção pode ser lançada (throw) e capturada (catch). Código pode ser envolvido por um bloco try para facilitar a captura de exceções potenciais. Cada bloco try precisa ter ao menos um bloco catch ou finally correspondente. O objeto lançado precisa ser uma instância da classe Exception ou uma subclasse de Exception. Tentar lançar um objeto sem essa ascendência resultará em um erro fatal. Ou seja, se você espera um valor e este não é como esperado, ai sim você lança o erro. Compartilhar este post Link para o post Compartilhar em outros sites
WagnerFilho 0 Denunciar post Postado Setembro 16, 2016 Que bom que aprendi também!!! Meu querido! :blink: Estendendo exceções O PHP 5 possui um modelo de exceções similar ao de outras linguagens de programação. Uma exceção pode ser lançada (throw) e capturada (catch). Código pode ser envolvido por um bloco try para facilitar a captura de exceções potenciais. Cada bloco try precisa ter ao menos um bloco catch ou finally correspondente. O objeto lançado precisa ser uma instância da classe Exception ou uma subclasse de Exception. Tentar lançar um objeto sem essa ascendência resultará em um erro fatal. Ou seja, se vocẽ espera um valor e este não é como esperado ai sim você lança o erro. ;) Valeu Williams... Compartilhar este post Link para o post Compartilhar em outros sites
Williams Duarte 431 Denunciar post Postado Setembro 16, 2016 Então... Um exemplo basico seria + ou - assim $data = '16/09/2016'; //Reverte para formato americano $data_db = implode('-', array_reverse(explode('/', $data)) ); try { //Espera que o formato seja 0000-00-00 para gravar no Banco if (!preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/",$data_db)) { throw new Exception("Esta data é inválida", 1); } } catch (Exception $e) { echo $e->getMessage(); } No ideone formato valido http://ideone.com/mvfz5P Compartilhar este post Link para o post Compartilhar em outros sites