Как добавить в БД значение null, если поле не было заполнено?
Я только знакомлюсь с пхп, и пытаюсь организовать добавление полей в БД, через инпуты. Обработчик у меня выглядит следую
require_once "connect.php";
$loc1 = $_POST["loc1"];
$loc2 = $_POST["loc2"];
$loc3 = $_POST["loc3"];
mysqli_query($connect, "INSERT INTO `locbase` (`id`, `loc1`, `loc2`, `loc3`) VALUES (NULL, '$loc1', '$loc2', '$loc3')");
header('Location: admin.php');
Проблема заключается в том, что в БД добавляются значения, только если все 3 поля заполнены. А я бы хотел добавлять, даже если одно заполнено, а остальные пустые.
Спасибо.
Ответы (1 шт):
Автор решения: Ипатьев
→ Ссылка
Записать значение null в бд несложно. Нужно сделать всего две вещи.
- Использовать подготовленные выражения. Поскольку их все равно надо всегда использовать при вставке, то этот пункт скорее риторический
- Собственно превратить пустую строку, которая приходит из формы когда поле не заполнено, в значение null
Итоговый код будет базироваться вот на этом ответе
# соединяемся с БД. лучше делать это в отдельном файле
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$db = new mysqli('127.0.0.1', '1', '1', 'vk2');
$db->set_charset('utf8mb4');
# превращаем пустые строки в null
$loc1 = $_POST["loc1"] ?: null;
$loc2 = $_POST["loc2"] ?: null;
$loc3 = $_POST["loc3"] ?: null;
# выполняем подготовленный запррос. все пояснения по ссылке выше
$sql = "INSERT INTO `locbase` (`loc1`, `loc2`, `loc3`) VALUES (?,?,?)");
$stmt = $link->prepare($sql);
$stmt->bind_param("sss", $loc1, $loc2, $loc3);
$stmt->execute();