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.


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

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;

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

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



3

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

$mycolupdate = null; // no quotes

powinien załatwić sprawę


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.