У меня есть инструкция MySQL, которая вставляет некоторые переменные в базу данных. Недавно я добавил 2 необязательных поля ($ intLat, $ intLng). Прямо сейчас, если эти значения не введены, я передаю в качестве значения пустую строку. Как передать в MySQL явное значение NULL (если оно пусто)?
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
'$intLat', '$intLng')";
mysql_query($query);
php
mysql
null
sql-insert
пользователь547794
источник
источник
$query
строке$intLat
и$intLng
не заключены в кавычки. Итак, когда переменные интерполированы, так и будет, NULL, NULL);
.Если вы не передадите значения, вы получите значения NULL по умолчанию.
Но вы можете просто передать слово NULL без кавычек.
источник
Для меня это отлично работает:
INSERT INTO table VALUES ('', NULLIF('$date',''))
(первое
''
увеличивает поле идентификатора)источник
NULLIF(expr1, expr2)
. См. Dev.mysql.com/doc/refman/5.7/en/…Все, что вам нужно сделать, это:
$variable =NULL;
// и передать его в запросе вставки. Это сохранит значение как NULL в mysql dbисточник
Обычно вы добавляете в mySQL обычные значения из PHP следующим образом:
function addValues($val1, $val2) { db_open(); // just some code ot open the DB $query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES ('$val1', '$val2')"; $result = mysql_query($query); db_close(); // just some code to close the DB }
Если ваши значения пустые / пустые ($ val1 == "" или $ val1 == NULL) и вы хотите, чтобы в SQL добавлялся NULL, а не 0 или пустая строка, к следующему:
function addValues($val1, $val2) { db_open(); // just some code ot open the DB $query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (". (($val1=='')?"NULL":("'".$val1."'")) . ", ". (($val2=='')?"NULL":("'".$val2."'")) . ")"; $result = mysql_query($query); db_close(); // just some code to close the DB }
Обратите внимание, что null должен быть добавлен как «NULL», а не как «NULL». Ненулевые значения должны быть добавлены как "'". $ Val1. "'" И т. Д.
Надеюсь, это поможет, мне просто пришлось использовать это для некоторых аппаратных логгеров данных, некоторые из них собирают температуру и излучение, другие - только излучение. Для тех, у кого нет датчика температуры, мне нужен NULL, а не 0 по очевидным причинам (0 также является допустимым значением температуры).
источник
ваш запрос может выглядеть следующим образом:
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng) VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$lng', '" . ($lat == '')?NULL:$lat . "', '" . ($long == '')?NULL:$long . "')"; mysql_query($query);
источник
NULL
. Кроме того, вы используетеNULL
ключевое слово PHP (без кавычек ), которое оценивается как пустая строка в строковом контексте, поэтому вы снова назначаете пустую строку .Перед построением запроса проверьте переменные, если они пусты, замените их на строку NULL
источник
вы можете сделать это, например, с
UPDATE `table` SET `date`='', `newdate`=NULL WHERE id='$id'
источник
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (". (($val1=='')?"NULL":("'".$val1."'")) . ", ". (($val2=='')?"NULL":("'".$val2."'")) . ")";
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (". (($val1=='')? :("'".$val1."'")) . ", ". (($val2=='')? :("'".$val2."'")) . ")";
источник