Вставить null значение в базе данных MySQL через PHP

198
07 мая 2018, 23:00

В базе данных есть столбец time с типом time, никак не могу записать в него NULL если ничего не приходит

public function add_task($user_id, $date, $task_arr){
    $time  =  'NULL';// КОНСОЛЬ ЛОГ ВЫВОДИТ null НО В бд ДОБАВЛЯЕТ 00:00:00
    $time = NULL;// КОНСОЛЬ ЛОГ ничего не выводит НО В бд ДОБАВЛЯЕТ 00:00:00
    //ЕСЛИ НАПРЯМУЮ В ЗАПРОСЕ ПИШУ NULL ТО ДОБАВЛЯЕТ ВСЕ НОРМАЛЬНО null
    //ЕСЛИ В ЗАПРОСЕ ПИШУ '$TIME' OR NULL ТО ЕСЛИ ПУСТАЯ СТРОКА ТО ВСЕ ОК ДОБАВЛЯЕТ NULL 
        //А ЕСЛИ СТРОКА СО ВРЕМЕНЕМ ТО ДОБАВЛЯЕТ 00:00:01
    $task = $task_arr['task_name'];
    $sql = mysql_query("INSERT INTO `tasks` (`for_user_id`, `time`, `date`, `task`) VALUES ('$user_id', '$time', '$date', '$task')") or die(mysql_error());
    print_r($time);
}//end add_task
Answer 1

Посмотри на класс PDO http://php.net/manual/ru/class.pdo.php

Твоя проблема в нем решится так:

$sth = $dbh->prepare('INSERT INTO `tasks` (`for_user_id`, `time`, `date`, `task`) VALUES (:user_id, :time, :date, :task)');
$sth->execute([
    ':user_id' => $user_id, 
    ':time' => $time,
    ':date' => $date,
    ':task' => $task,
]);

Почему не стоит использовать функции семейства mysql_query:

  • Они уже устарели и в последней версии PHP не поддерживаются
  • Если вставлять переменные в запрос так как вставляешь ты, то очень легко сделать инъекцию к твоей БД.
Answer 2

Можете по другому сделать. Столбец поставьте с значением по умолчанию null а когда вводите ряд, то забудьте про этот столбец.

Или попробуйте в переменную написать null не заглавными буквами.

Ещё не забудьте убрать кавычки:

"INSERT INTO `tasks` (`for_user_id`, `time`, `date`, `task`) VALUES ('{$user_id}', {$time}, '{$date}', '{$task}')"
READ ALSO
Можно ли с помощью PHP вызвать Javascript код?

Можно ли с помощью PHP вызвать Javascript код?

Сервис WalletOne после успешной оплаты делает POST запрос к указанному url и отправляет данные об оплатеМне нужно, чтобы после оплаты я смог вызвать...

206
Как разделить этот числу? [требует правки]

Как разделить этот числу? [требует правки]

В базе есть такая таблица:

184
php: синглтон для работы с БД

php: синглтон для работы с БД

написал вот такой код для работы с БД:

219
Поиск по базе данных на PHP

Поиск по базе данных на PHP

Помогите, пожалуйстаНе получается осуществить поиск по базе данных

183