Задать вопрос
razrab228
@razrab228
зачем тебе знать это?

Как вставлять записи в базу данных со значением null, если переменная пустая?

Здравствуйте! Давно мучаюсь с проблемой: при создании новой записи:

$query = mysqli_query($connection, "
	INSERT INTO `table` (`id`, `value_1`, `value_2`)
	VALUES (NULL, '$val1', '$val2')
");


запись может быть такая:
| ID, VALUE_1, VALUE_2 |
NULL, '', ''

(то-есть поля, которые могут быть NULL, просто пустый, а не NULL). Как вставлять NULL, если переменная пустая???
  • Вопрос задан
  • 415 просмотров
Подписаться 1 Простой 5 комментариев
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
Сначала надо определиться с тем, что такое "пустая переменная".

Если она содержит значение null, то просто вставить через подготовленный запрос, так же, как это надо делать всегда,
выполняя запросы с переменными
$sql = NSERT INTO `table` (`id`, `value_1`, `value_2`) VALUES (?,?,?)";
$connection->prepare($sql)->execute([null,$var1, $var2]);

(если у вас устаревшая версия РНР, то так)
$sql = NSERT INTO `table` (`id`, `value_1`, `value_2`) VALUES (null,?,?)";
$stmt = $connection->prepare($sql);
$stmt->bind_param("ss",$var1, $var2)
$stmt->execute();


Если же переменная содержит пустую строку, то сначала присвоить ей null, например
$var1 = ($var1 !== '') ? $var1 : null;
И потом точно так же подставить в запрос
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
(NULL, '$val1', '$val2')
  1. Не стоит оборачивать в кавычки значение, пока не убедились что в нём не null.
    'null' для MySQL это уже строка
  2. PHP-шный null при приведении к строке преобразуется в пустую строку. Так что либо заменяйте его на строку NULl сами, либо перестаньте работать с запросами как со строками, и воспользуйтесь методами для построения запросов
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽