Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

-rafael-

[Resolvido] como inserir valor nulo atravez de variavel?

Recommended Posts

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

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

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

$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

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

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

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.