-rafael- 1 Denunciar post Postado Março 25, 2010 ola a todos! em um dos meus forms, tenho um campo que pode ou nao ficar em branco. o detalhe é que gostaria que se nada fosse preenchido, colocasse null no banco, mas nao estou conseguindo. $query = "INSERT INTO tabela VALUES ('$valor')"; ja tentei isso: $valor= (empty($_POST['valor'])) ? NULL : $_POST['valor']; mas nao funcionou, ou da erro de cadastramento, ou preenche em branco. como faço para colocar null no banco? obrigado Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Março 25, 2010 Usando PDO tudo fica mais fácil: $pdo = new PDO( 'mysql:host=127.0.0.1;dbname=test' , 'user' , 'pswd' ); $stm = $pdo->prepare( 'INSERT INTO `tabela`(`coluna`) VALUES(:valor);' ); $stm->bindParam( ':valor' , $_POST[ 'valor' ] , isset( $_POST[ 'valor' ] ) ? PDO::PARAM_STR : PDO::PARAM_NULL ); $stm->execute(); Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Março 26, 2010 ola Joao! obrigado pela ajuda! mas essa seria a unica forma? ou teria outros meios? obrigado! Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Março 26, 2010 ou teria outros meios? @-rafael-, Trabalhamos com PHP, o que não faltam são meios de se conseguir alguma coisa. Porém, para te ajudar, precisamos conhecer o estado atual do seu código, por exemplo, como você está executando a consulta ? Está usando as funções mysql_*, está usando MySQLi, PDO ??? $query = "INSERT INTO tabela VALUES ('$valor')"; Essa consulta, da forma que está vai gravar uma string com o valor NULL em vez do tipo NULL. O primeiro passo é remover as aspas de dentro da string, ficaria assim: $query = "INSERT INTO tabela(`coluna`) VALUES ($valor)"; Ai, antes de executar a consulta, você verifica se o valor existe: $valor = 'NULL'; if ( isset( $_POST[ 'valor' ] ) ){ $valor = '"' . addslashes( $_POST[ 'valor' ] ) . '"'; } $query = "INSERT INTO tabela(`coluna`) VALUES ($valor)"; Compartilhar este post Link para o post Compartilhar em outros sites
cristiadu 0 Denunciar post Postado Março 26, 2010 $valor= (isset($_POST['valor'])) ?$_POST['valor']: "NULL"; o null teria que vir com aspas, daí passava corretamente...no empty eu não sei, no isset tenho praticamente ctz (até pq eu faço assim) Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Março 26, 2010 Joao, primeiro, obrigado pela ajuda. e me desculpe. realmente faltou informações a respeito do meu sistema. para executar utilizo o mysql_query($query, $conexao). fiz exatamente como você citou no seu post, e o valor foi uma string com o valor em branco e não NULL reparei no que você falou sobre as aspas, e realmente é necessário utiliza-lá? cristiadu obrigado pela ajuda fiz como você falou (e sem as aspas na query como o Joao falou), e deu certo: NULL inserido no banco. Compartilhar este post Link para o post Compartilhar em outros sites
João Batista Neto 448 Denunciar post Postado Março 26, 2010 fiz como você falou (e sem as aspas na query como o Joao falou), e deu certo: NULL inserido no banco. Resolvido ? Compartilhar este post Link para o post Compartilhar em outros sites
-rafael- 1 Denunciar post Postado Março 26, 2010 pode-se dizer que sim! porem pelo método que você passou, infelizmente não consegui. sobre o que eu comentei sobre as aspas, alguma coisa a dizer? no mais, muito obrigado!!! Compartilhar este post Link para o post Compartilhar em outros sites
Evandro Oliveira 331 Denunciar post Postado Março 28, 2010 o que você tem que entender é que o NULL do PHP é diferente do NULL do MySQL se você fizer assim: $var = 'NULL'; mysql_query('insert into `tabela`(`campo`) values('.$var.')'); você estará inserindo NULL em SQL no banco de dados agora se fizer $var = NULL; mysql_query('insert into `tabela`(`campo`) values('.$var.')'); note que $var = NULL do PHP, ou seja é uma string nula ou vazia. sua query final entraria assim no SQL INSERT INTO `tabela`(`campo`) VALUES() o que em alguns casos gera erro Compartilhar este post Link para o post Compartilhar em outros sites