Установите значение NULL в MySQL

133

Я хочу, чтобы было установлено значение, NULLесли в текстовое поле в форме, которую я отправляю, ничего не помещается. Как я могу это сделать? Я пробовал вставить, 'NULL'но это просто добавляет слово NULLв поле.

Я не уверен, какой код мне для этого предоставить, я просто пишу запрос UPDATE.

muttley91
источник
12
Вам нужно будет вставить слово null без кавычек ..
Майк Кристенсен

Ответы:

269

Не ставьте NULLкавычки в операторе обновления. Это должно работать:

UPDATE table SET field = NULL WHERE something = something
Fosco
источник
То же самое здесь: Static analysis: 1 errors were found during analysis. Unrecognized keyword. (near "NULL" at position 35) SQL query: UPDATE programs SET flash = NULL. - Обновление: WHEREпричиной проблемы было следующее условие!
Кай Ноак
16

Вы, вероятно, цитируете «NULL». NULL - это зарезервированное слово в MySQL, и его можно вставлять / обновлять без кавычек:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL);
UPDATE user SET something_optional = NULL;
Эндрю Энсли
источник
10
UPDATE MyTable
SET MyField = NULL
WHERE MyField = ''
Бассам Механни
источник
Я думаю, проблема в том, что он использует: «NULL» вместо NULL.
Нир Альфаси
Но при некоторой осторожности это может исправить существующие пустые поля wanna-be-null: 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)";

если вы введете 'NULL'свой запрос, вы просто вставите строку из 4 символов. Без кавычек NULL- фактическое нулевое значение.

Марк Б
источник
5

Использовать NULL(без кавычек).

UPDATE users SET password = NULL where ID = 4
Ракета Хазмат
источник
5

Вы должны вставить null, а не строку 'NULL'.

xdazz
источник
3

Предполагая, что столбец допускает нулевое значение,

$mycolupdate = null; // no quotes

должен сделать трюк

Г-н Гривер
источник
1
... предполагая, что вы не приведете $mycolupdateк строке на более позднем этапе.
Альваро Гонсалес
2

Приведенные здесь ответы хороши, но я все еще пытался опубликовать NULL, а не ноль в таблице mysql.

Наконец, я заметил, что проблема была в запросе на вставку, который я использовал

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

Все идет нормально.

Мой запрос на вставку был плохим.

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

Я исправил запрос на чтение.

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

Таким образом, количество $ находится за пределами основной строки. Моя таблица sql теперь принята для записи нулевого количества вместо 0

полотна
источник
Я также рекомендовал бы отказаться от устаревших функций mysql_ и перейти на mysqli или, как я предпочитаю, PDO.
muttley91
2

Проблема, с которой вы столкнулись, скорее всего, связана с тем, что mysql различает значение null, написанное заглавными буквами, и null, написанное строчными буквами.

Поэтому, если вы использовали оператор обновления с нулевым значением, это не сработает. Если вы установите его в NULL, он будет работать нормально.

Спасибо.

user7509683
источник