Как записать в базу пустое поле?

Здравствуйте! Передаю форму с несколькими полями, если одно из полей не заполнено, то в базу не записывается. Как сделать возможность записи пустых полей?
$query = $db->query('INSERT INTO `order`(`user_id`, `articul_id`, `sharpener_id`, `barcode`, `quantity`) VALUES ('.$user_id.','.$articul_id.','.$sharpener_id.','.$barcode.','.$quantity.')');

<? if(isset($_POST['users']) && isset($_POST['articul']) && isset($_POST['sharpeners']) && isset($_POST['barcode']) && $_POST['quantity']!="" && $_POST['users'] !="Выберите сотрудника" && $_POST['articul'] !="Выберите артикул" && $_POST['sharpeners'] !="Выберите заточника"){ ?><?}?>
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
- $query = $db->query('INSERT INTO `order`(`user_id`, `articul_id`, `sharpener_id`, `barcode`, `quantity`) VALUES ('.$user_id.','.$articul_id.','.$sharpener_id.','.$barcode.','.$quantity.')');
+ $db->prepare(
+     'INSERT INTO `order` (`user_id`, `articul_id`, `sharpener_id`, `barcode`, `quantity`)' . 
+         'VALUES (?, ?, ?, ?, ?)'
+ )->execute([$user_id, $articul_id, $sharpener_id, $barcode, $quantity]);
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@grek_cheburek
Программист самоучка
Так вроде как в новых версиях mariadb и mysql запрещено пустые поля делать. Можно NOT NULL, NULL или DEFAULT
Ответ написан
@rPman
Не надо так делать, откуда вы берете такие инструкции?
VALUES ('.$user_id.','.$a
пользоваться нужно prepared statements (они есть для всех драйверов, вот например mysqli), это не только исключит разные проблемы с типами (например строки придется экранировать) но и даст бонусом защиту от sql-иньекций

Причина, почему у тебя не работает - конкатенация NULL со строкой ничего не делает (добавляет пустую строку), а нужно писать NULL либо исключить поле из sql запроса а при создании таблицы у поля написать default null
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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