2013-09-18 3 views
2

Это будет легко для вас, но я ноб, поэтому мне нужна помощь.MySQL не вставляет значение NULL

Вот мой код, по какой-либо причине инструкция else не выполняется. Если я изменяю значение NULL для переменной $ variable = NULL, он работает, но вводит пустую строку в мою базу данных, а не значение NULL. Может кто-нибудь помочь с чем?

if (isset($_POST['agreeto'])) 
{ 
    $enter_feedback = "INSERT INTO feedback" . //(initial, surname, country_id, date, friend_score, return_score, service_score, comments) 
     " VALUES('" . $initial. "', '" . $lastname . "', '" . $country_id . "', NOW(), '" . $friend . "', '" . $return . "', '" . $service . "', '" . $_POST['comments'] . "')"; 
}else 
{ 
    $enter_feedback = "INSERT INTO feedback" . //(initial, surname, country_id, date, friend_score, return_score, service_score, comments) 
    " VALUES('" . $initial. "', '" . $lastname . "', '" . $country_id . "', NOW(), '" . $friend . "', '" . $return . "', '" . $service . "', " . NULL . ")" or die("couldn't execute my query"); 
} 
+1

** предупреждение ** ваш код уязвим для SQL-инъекций. используйте параметризованный запрос, который также устранит вашу проблему. –

+0

Поддерживает ли ваша колонка NULL? – Mihai

+0

, если значение по умолчанию для столбца равно NULL - просто не вставляйте ничего в столбец 'comments' и удалите его из инструкции insert – Elen

ответ

3

MySQL требует строку = NULL, и вы передаете ей значение константы php NULL.

if (isset($_POST['agreeto'])) 
       { 
        $enter_feedback = "INSERT INTO feedback" . //(initial, surname, country_id, date, friend_score, return_score, service_score, comments) 
        " VALUES('" . $initial. "', '" . $lastname . "', '" . $country_id . "', NOW(), '" . $friend . "', '" . $return . "', '" . $service . "', '" . $_POST['comments'] . "')"; 
       }else 
        { 
         $enter_feedback = "INSERT INTO feedback" . //(initial, surname, country_id, date, friend_score, return_score, service_score, comments) 
         " VALUES('" . $initial. "', '" . $lastname . "', '" . $country_id . "', NOW(), '" . $friend . "', '" . $return . "', '" . $service . "',NULL)" or die("couldn't execute my query"); 
        } 
0

Это должно работать должным образом.

Попробуйте установить столбец в int, если это не сработает.

INSERT INTO table (val1, val2) VALUES('String Value', NULL); 

или установить значение столбца по умолчанию равным NULL.

0

Нулевое значение не может быть заключен в «апостроф»

Подумайте о том, как вы получите SQL:

INSERT INTO table_name VALUES ('null','');? 

База данных может понять, как строка

+1

Где OP, закрывающий его в апострофе? –

0

Просто замените ' NULL 'с NULL без кавычек.

$enter_feedback = "INSERT INTO feedback" . //(initial, surname, country_id, date, friend_score, return_score, service_score, comments) 
       " VALUES('" . $initial. "', '" . $lastname . "', '" . $country_id . "', NOW(), '" . $friend . "', '" . $return . "', '" . $service . "', NULL) " or die("couldn't execute my query"); 

После того, как вы сделаете это и сохранить запись вы увидите в столбце базы данных для этого поля NULL при просмотре через PhpMyAdmin. Пожалуйста, убедитесь, что поле «comments» соответствует NULL.

Смежные вопросы