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


132

Я хочу, щоб було встановлено значення, NULLякщо нічого не буде введено у текстове поле у ​​формі, яку я надсилаю. Як я можу це зробити? Я спробував вставити, 'NULL'але це просто додає слово NULLв поле.

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


12
Вам доведеться вставити слово null без лапок ..
Майк Крістенсен

Відповіді:


268

Не ставте 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.
Нір Альфасі

Але, з певною обережністю, це могло б виправити наявні порожні поля, які хочуть бути нульовими: 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, він не працюватиме. Якщо встановити його на NULL, воно буде добре працювати.

Дякую.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.