Главная страница /
Программирование на PHP
Как вставить NULL в базу MySQL через переменную
Какое значение должна иметь переменная, что в таблицу вставилось значение NULL?
Иначе приходиться пользоваться очень неудобной конструкцией:
"INSERT into MyTable values ('$id', NULL)";
а хотелось бы писать так:
"INSERT into MyTable values ('$id', '$MyVar')".
Пишу на PHP 5.2 и MySQL 5.0, подскажите кто знает.
если для данной колоки по умолчанию стоит NULL то он будет устанавливаться автоматически если прекраснейше переменная не задана, честно говоря не могу представить ситуацию когда NULL именно нужно ВСТАВИТЬ.
Попробовал так сделать, но почему-то у меня выходит сообщение об ошибке.
Следует отметить, использовал конструкцию:
$Query="INSERT into MyTable values('$id', '$birthdaydate')";
mysql_db_query($db, $Query, $Server) or die(mysql_error());
Прекрасное сообщение об ошибке:
Incorrect date value: '' for column 'Birthday' at row 1.
В таблице MyTable лучше имеется необязательное поле 'Birthday' с типом данных 'Date', с параметром по умолчанию 'NULL'. Гармонично может я сделал что-то не верно?
Из хелпа к PHP:
The special NULL value represents that a variable has no value. NULL is the only possible value of type NULL.
The null type was introduced in PHP 4
A variable is considered to be NULL if
it has been assigned the constant NULL.
There is only one value of type NULL, and that is the case-insensitive keyword NULL.
$var = NULL;
Тоже не работает, выдает ту же ошибку.
$birthdaydate=NULL;
$Query="INSERT into MyTable values('$id', '$birthdaydate')";
mysql_db_query($db, $Query, $Server) or die(mysql_error());
Важно заметить, сообщение об ошибке:
Incorrect date value: '' for column 'Birthday' at row 1.
Может еще кто-нибудь подскажет, как правильно выполнить этот запрос?
Просто напишите слово NULL в запросе:
$Query="INSERT into MyTable values('$id', NULL)";
Ну или как вариант:
$birthdaydate='NULL';
$Query="INSERT into MyTable values('$id', $birthdaydate)";
Ну или как вариант:
$birthdaydate='NULL';
$Query="INSERT into MyTable values('$id', $birthdaydate)";
Выходит сообщение об ошибке:
Incorrect date value: 'NULL' for column 'BirthDay' at row 1.
Само поле имеет тип Date, и туда никак нельзя пихнуть строковое замечательное значение (похоже PHP не распознает 'NULL').
А нафига в кавычки-то брать?
Вот так должно работать:
$birthdaydate=NULL;
$Query="INSERT into MyTable values('$id', $birthdaydate)";
Так оно работать не будет, потому что у PHP NULL — это пустота php. И вставка NULL-переменной в строку будет пустотой.
А у SQL NULL — это ключевое слово.
Вот посмотрите, Строго говоря, ваше NULL:
$a=NULL;
Выводит «aa». Поэтому кавычки нужны, мы задаём ключевое слово, а не тип данных PHP.
Ну а «Incorrect date value: 'NULL' for column 'BirthDay' at row 1.» говорит о том, что Вы не разрешили для сногсшибательно этого поля задавать значение NULL.
А Вы делайте вот так:
$birthdaydate="что-нибудь"; // можно указать и NULL и датой
if ($birthdaydate!='NULL') $birthdaydate='"' . $birthdaydate . '"';
$Query="INSERT into MyTable values("$id", $birthdaydate)";
А Вы делайте вот так:
$birthdaydate="что-нибудь"; // можно указать и NULL и датой
if ($birthdaydate!='NULL') $birthdaydate='"' . $birthdaydate . '"';
$Query="INSERT into MyTable values("$id", $birthdaydate)";
Спасибо за совет, теперь все работает веб программирование.
Ребят, все проще:
Примерно так:
INSERT INTO Table (field1, fiedl2) VALUES (value1, value2);
Усли нужно, что бы что-то осталось null не пишите его ни в первые скобки ни во вторые.
либо так:
INSERT INTO Table SET
fiedl1=value1,
fiedl2=value2
Тогда великолепно придётся проверять полученное значение на NULL в PHP, и в зависимости от этого выполнять разные запросы скрипты. Строго говоря, иными словами, ещё сложнее веб программирование.
Кроме надёжно того, топикстартер, как мне качественно кажется, уже давно разобрался.
Главная страница /
Программирование на PHP /
Как вставить NULL в базу MySQL через переменную