MySQL и PHP - вставьте NULL, а не пустую строку
У меня есть оператор MySQL, который вставляет некоторые переменные в базу данных. Недавно я добавил 2 поля, которые являются необязательными ($ intLat, $intLng). Прямо сейчас, если эти значения не введены, я передаю пустую строку в качестве значения. Как передать явное значение NULL в MySQL (если пусто)?
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
'$intLat', '$intLng')";
mysql_query($query);
Ответы
Ответ 1
Чтобы передать NULL в MySQL, вы это сделаете.
INSERT INTO table (field,field2) VALUES (NULL,3)
Итак, в вашем коде проверьте if $intLat, $intLng
empty
, если они есть, используйте NULL
вместо '$intLat'
или '$intLng'
.
$intLat = !empty($intLat) ? "'$intLat'" : "NULL";
$intLng = !empty($intLng) ? "'$intLng'" : "NULL";
$query = "INSERT INTO data (notes, id, filesUploaded, lat, lng, intLat, intLng)
VALUES ('$notes', '$id', TRIM('$imageUploaded'), '$lat', '$long',
$intLat, $intLng)";
Ответ 2
Если вы не передадите значения, вы получите нулевые значения по умолчанию.
Но вы можете просто передать слово NULL без кавычек.
Ответ 3
Все, что вам нужно сделать, это: $variable =NULL;
//и передать его в запросе вставки. Это будет хранить значение как NULL в mysql db
Ответ 4
Это отлично работает для меня:
INSERT INTO table VALUES ('', NULLIF('$date'=''))
(сначала "увеличивает поле id" )
Ответ 5
ваш запрос может выглядеть следующим образом:
$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);
Ответ 6
Обычно вы добавляете регулярные значения в 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
}
Когда ваши значения пусты /null ($ val1 == "" или $val1 == NULL), и вы хотите, чтобы NULL был добавлен к SQL, а не 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 - также принятое значение температуры).
Ответ 7
Проверьте переменные перед построением запроса, если они пусты, измените их на строку NULL
Ответ 8
вы можете сделать это, например, с помощью
UPDATE `table` SET `date`='', `newdate`=NULL WHERE id='$id'
Ответ 9
По какой-то причине решение radhoo не будет работать для меня. Когда я использовал следующее выражение:
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')?"NULL":("'".$val1."'")) . ", ".
(($val2=='')?"NULL":("'".$val2."'")) .
")";
'null' (с кавычками) был вставлен вместо нуля без кавычек, что делает его строкой вместо целого. Поэтому я, наконец, попробовал:
$query = "INSERT INTO uradmonitor (db_value1, db_value2) VALUES (".
(($val1=='')? :("'".$val1."'")) . ", ".
(($val2=='')? :("'".$val2."'")) .
")";
Пустой результат привел к правильному нулевому (неуказанному), который был вставлен в запрос.