Defina o valor como NULL no MySQL


132

Quero que um valor seja definido NULLse nada for colocado na caixa de texto no formulário que estou enviando. Como posso fazer isso acontecer? Eu tentei inserir, 'NULL'mas isso apenas adiciona a palavra NULLao campo.

Não tenho certeza de qual código devo fornecer para isso, estou apenas escrevendo uma consulta UPDATE.


12
Você terá que inserir a palavra null sem as aspas ..
Mike Christensen

Respostas:


268

Não coloque NULLaspas internas na sua declaração de atualização. Isso deve funcionar:

UPDATE table SET field = NULL WHERE something = something

Mesmo aqui: Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - Atualização: Foi a seguinte WHEREcondição que causou o problema!
Kai Noack

16

Você provavelmente está citando 'NULL'. NULL é uma palavra reservada no MySQL e pode ser inserida / atualizada sem aspas:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL);
UPDATE user SET something_optional = NULL;

10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''

Eu acho que o problema é que ele está usando: 'NULL' em vez de NULL.
Nir Alfasi

Mas, com algum cuidado, isso poderia corrigir wanna-be-nulos campos vazios existentes: P
Erenor Paz

6
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) {
   $val = 'NULL';
} else {
   $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'";
}

$sql = "INSERT INTO .... VALUES ($val)";

se você colocar 'NULL'em sua consulta, está apenas inserindo uma sequência de 4 caracteres. Sem as aspas, NULLé o valor nulo real.



5

Você deve inserir null, não a sequência de 'NULL'.


3

Supondo que a coluna permita uma configuração nula,

$mycolupdate = null; // no quotes

deve fazer o truque


1
... supondo que você não use $mycolupdatea corda posteriormente.
Álvaro González

2

As respostas dadas aqui são boas, mas eu ainda estava lutando para postar NULL e não zero na tabela mysql.

Finalmente, notei que o problema estava na consulta de inserção que eu estava usando

   $quantity= "NULL";
   $itemname = "TEST";

Por enquanto, tudo bem.

Minha consulta de inserção estava incorreta.

   mysql_query("INSERT INTO products(quantity,itemname) 
   VALUES ('$quantity','$itemname')");

Corrigi a consulta para ler.

   mysql_query("INSERT INTO products(quantity,itemname) 
   VALUES ('".$quantity."','$itemname')");

Portanto, a quantidade $ está fora da cadeia principal. Minha tabela sql agora aceita gravar quantidade nula em vez de 0


Eu também recomendaria abandonar as funções mysql_ obsoletas e mudar para mysqli ou, minha preferência, PDO.
Muttley91

2

O problema que você teve é ​​mais provável porque o mysql diferencia entre nulo escrito em letras maiúsculas e nulo escrito em letras minúsculas.

Portanto, se você usasse uma instrução de atualização com nula, ela não funcionaria. Se você configurá-lo como NULL, funcionaria bem.

Obrigado.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.