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.

muttley91
fonte
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
Fosco
fonte
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;
Andrew Ensley
fonte
10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''
Bassam Mehanni
fonte
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.

Marc B
fonte
5

Use NULL(sem as aspas).

UPDATE users SET password = NULL where ID = 4
Foguete Hazmat
fonte
5

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

xdazz
fonte
3

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

$mycolupdate = null; // no quotes

deve fazer o truque

Mr Griever
fonte
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

teias
fonte
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.

user7509683
fonte