Как отправить в БД пустое значение 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