Как отправить в БД пустое значение input с формы сайта используя php

я пытаюсь самостоятельно изучать php и mysql на данном этапе и столкнулся с такой проблемой, что при отправке формы в базу данных все работает, но стоит отправить пустое поле, запись в БД не добавляется. Вот код, абсолютно стандартный:

<?php 
require_once ("../connect/connect.php"); 
$date = $_POST['date'];
$remont = $_POST['remont'];
$sum = $_POST['sum'];
$note = $_POST['note'];

mysqli_query($connect, "INSERT INTO `avto` (`id`, `date`, `remont`, `sum`, `note`) VALUES (NULL, '$date', '$remont', '$sum', '$note')");
header("Location: ../index.php");

?>

Пробовал писать что-то подобное:

if (!$date) {
    $date = NULL;
}

Это не работает. В интернете уже долго капаюсь ничего не могу найти, все либо пока еще для меня очень сложно и запутанно либо нет подходящего ответа. Помогите пожалуйста найти ответ новичку.


Ответы (1 шт):

Автор решения: Алексей Шиманский

Пробовал писать что-то подобное:

if (!$date) { $date = NULL; } Это не работает.

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

Поэтому придётся прямо в запросе использовать тернарник, если есть дата - вставлять как строку, если нет - то NULL. Это будет жёстко, сложно, но можно.


А можно изучить подготовленные запросы и не мучиться с этим.

А в целом почитайте про подготовленные переменные, во-первых так запрос будет безопаснее, а во-вторых не придётся мучиться с конкатенациями и пр.

https://www.php.net/manual/ru/mysqli.quickstart.prepared-statements.php

Драйверы для работы с подготовленными запросами: mysqli и pdo

→ Ссылка