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


133

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

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


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

Ответы:


269

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

UPDATE table SET field = NULL WHERE something = something

То же самое здесь: 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- фактическое нулевое значение.




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, он будет работать нормально.

Спасибо.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.