Ustaw wartość na NULL w MySQL

140

Chcę ustawić wartość, NULLjeśli nic nie zostanie umieszczone w polu tekstowym w przesyłanym formularzu. Jak mogę to zrobić? Próbowałem wstawić, 'NULL'ale to po prostu dodaje słowo NULLdo pola.

Nie jestem pewien, jaki kod powinienem w tym celu podać, po prostu piszę zapytanie UPDATE.

muttley91
źródło
12
Będziesz musiał wstawić słowo null bez cudzysłowów ..
Mike Christensen

Odpowiedzi:

281

Nie umieszczaj NULLcudzysłowów w oświadczeniu o aktualizacji. To powinno działać:

UPDATE table SET field = NULL WHERE something = something
Fosco
źródło
18

Prawdopodobnie cytujesz „NULL”. NULL to słowo zastrzeżone w MySQL, które można wstawiać / aktualizować bez cudzysłowów:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL);
UPDATE user SET something_optional = NULL;
Andrew Ensley
źródło
11
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''
Bassam Mehanni
źródło
Myślę, że problem polega na tym, że używa: „NULL” zamiast NULL.
Nir Alfasi,
Ale, z pewną ostrożnością, może to naprawić istniejące puste pola, które mają być puste: P
Erenor Paz,
6

Użyj NULL(bez cudzysłowów).

UPDATE users SET password = NULL where ID = 4
Rocket Hazmat
źródło
6
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) {
   $val = 'NULL';
} else {
   $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'";
}

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

jeśli umieścisz 'NULL'w zapytaniu, po prostu wstawiasz 4-znakowy ciąg. Bez cudzysłowów NULLjest to rzeczywista wartość null.

Marc B.
źródło
6

Należy wstawić null, a nie ciąg 'NULL'.

xdazz
źródło
3

Zakładając, że kolumna umożliwia ustawienie zerowe,

$mycolupdate = null; // no quotes

powinien załatwić sprawę

Panie Griever
źródło
1
... zakładając, że nie rzucisz $mycolupdatena strunę na późniejszym etapie.
Álvaro González
2

Odpowiedzi tutaj podane są dobre, ale nadal starałem się opublikować NULL, a nie zero w tabeli mysql.

Wreszcie zauważyłem, że problem dotyczy zapytania wstawiania, którego używałem

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

Na razie w porządku.

Moje zapytanie było złe.

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

Poprawiłem zapytanie do przeczytania.

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

Więc ilość $ jest poza głównym ciągiem. Moja tabela sql została teraz zaakceptowana do rejestrowania ilości zerowej zamiast 0

sieci
źródło
Poleciłbym również porzucić przestarzałe funkcje mysql_ i przejść na mysqli lub, według moich preferencji, PDO.
muttley91
2

Problem, który miałeś jest najprawdopodobniej spowodowany tym, że mysql rozróżnia wartość null zapisaną dużymi literami i wartość null zapisaną małymi literami.

Więc jeśli użyjesz instrukcji aktualizacji z wartością null, to nie zadziała. Jeśli ustawisz ją na NULL, będzie działać dobrze.

Dzięki.

user7509683
źródło