Запрос на вставку NULL php

244
01 июля 2018, 14:10

Как сделать запрос на вставку NULL? Точнее как сделать это через переменную $date_contract_finish

if ($_GET['date_contract_finish'] == ''){
  $date_contract_finish = NULL;
}else{
  $date_contract_finish = $_GET['date_contract_finish'];
}
$sql = "UPDATE project_registry SET 
        date_contract_finish = '$date_contract_finish' 
         WHERE id = '$id'"

В итоге вставляется пустая строка, а необходимо вставить null.

Answer 1
if ($_GET['date_contract_finish'] == ''){
  $date_contract_finish = "NULL";
}else{
  $date_contract_finish = "'" . $_GET['date_contract_finish'] ."'";
}
$sql = "UPDATE project_registry SET 
        date_contract_finish = $date_contract_finish
         WHERE id = '$id'"
Answer 2

Используйте механизм prepared statements. Что PDO что mysqli корректно передают NULL через prepared statements. И, что существенно важнее, закроете открытую дыру для sql-инъекции.

$stmt = $pdo->prepare("UPDATE project_registry SET 
    date_contract_finish = :date_contract_finish
     WHERE id = :id");
$stmt->execute([
    'date_contract_finish' => empty($_GET['date_contract_finish']) ? null : $_GET['date_contract_finish'],
    'id' => $id,
]);

Если вам действительно не нужно валидировать формат. Хотя скорее всего вам сперва нужно проверить, что вам передали что-то похожее на дату.

READ ALSO
парсер/грабер сайта. Как выбрать текст из div

парсер/грабер сайта. Как выбрать текст из div

Доброго времени суток всем кто читаетНе получается отделить время добавления статьи от категории

251
Ajax. Передача спецсимвола из php

Ajax. Передача спецсимвола из php

Ситуация такая: есть форма, которую заполняет пользователь, данные обрабатываются в php-скрипте, затем возвращается ответПри определенном...

207
PHP умножение данных массива по принципу 1-2|1-3|2-3

PHP умножение данных массива по принципу 1-2|1-3|2-3

Есть динамический массив принципа:

216
QML. Последний дочерний элемент. C++

QML. Последний дочерний элемент. C++

Как получить последний дочерний элемент у объекта?

204