2012-02-16 2 views
82

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

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

+9

Вам нужно будет вставить слово «null» * без котировок. –

ответ

176

Не размещайте NULL внутри кавычек в своем заявлении об обновлении. Это должно работать:

UPDATE table SET field = NULL WHERE something = something 
+3

Huh. Я мог бы поклясться, что попробовал это. Возможно, в то же время у меня была другая ошибка. Благодаря! – muttley91

+0

То же самое: 'Статический анализ: во время анализа было найдено 1 ошибка. Непризнанное ключевое слово. (около «NULL» в позиции 35) SQL-запрос: программы UPDATE SET flash = NULL'. - Обновление: Это вызвало следующее условие 'WHERE'! –

3

NULL Использование (без кавычек вокруг него).

UPDATE users SET password = NULL where ID = 4 
9
UPDATE MyTable 
SET MyField = NULL 
WHERE MyField = '' 
+0

Я думаю, что проблема в том, что он использует: «NULL» вместо NULL. – alfasin

+0

Но, с некоторой осторожностью, это могло бы исправить существующие пустые поля wanna-be-null: P –

15

Вы, вероятно, со ссылкой на 'NULL'. NULL является зарезервированным словом в MySQL, и может быть вставлен/обновляться без кавычек:

INSERT INTO user (name, something_optional) VALUES ("Joe", NULL); 
UPDATE user SET something_optional = NULL; 
5
if (($_POST['nullfield'] == 'NULL') || ($_POST['nullfield'] == '')) { 
    $val = 'NULL'; 
} else { 
    $val = "'" . mysql_real_escape_string($_POST['nullfield']) . "'"; 
} 

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

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

4

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

2

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

$mycolupdate = null; // no quotes 

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

+1

... предполагая, что вы не накладываете '$ mycolupdate' на строку на более позднем этапе. –

0

ответам здесь хороши, но я по-прежнему изо всех сил, чтобы отправлять NULL и не равна нулю в тузд таблице.

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

$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

+0

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

1

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

Так что если вы использовали инструкцию update с нулевым значением, это не сработало. Если вы установите значение NULL, это будет нормально работать.

Спасибо.

Смежные вопросы