@razrab228
html, люблю больше php.

Как вставлять записи в базу данных со значением 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, если переменная пустая???
  • Вопрос задан
  • 147 просмотров
Решения вопроса 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 сами, либо перестаньте работать с запросами как со строками, и воспользуйтесь методами для построения запросов
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы