Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » ASP, Perl, PHP и MySQL

Как вставить NULL в базу MySQL через переменную

Обсуждение темы Как вставить NULL в базу MySQL через переменную в разделе ASP, Perl, PHP и MySQL, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Какое значение должна иметь переменная, что в таблицу вставилось значение NULL? Иначе приходиться пользоваться очень неудобной конструкцией: "INSERT into MyTable values ('$id', NULL)"; ...


Закрытая тема
 
Опции темы
Старый 28.11.2006, 10:57   #1
Какое значение должна иметь переменная, что в таблицу вставилось значение NULL?
Иначе приходиться пользоваться очень неудобной конструкцией:
"INSERT into MyTable values ('$id', NULL)";
а хотелось бы писать так:
"INSERT into MyTable values ('$id', '$MyVar')".
Пишу на PHP 5.2 и MySQL 5.0, подскажите кто знает.
 
Старый 28.11.2006, 10:57
Ссылки
Старый 28.11.2006, 19:24   #2
если для данной колоки по умолчанию стоит NULL то он будет устанавливаться автоматически если переменная не задана, честно говоря не могу представить ситуацию когда NULL именно нужно ВСТАВИТЬ.
 
Старый 29.11.2006, 12:46   #3
Попробовал так сделать, но почему-то у меня выходит сообщение об ошибке.
Использовал конструкцию:
<?php
. . .
if(isset($birthdaydate))
{
print("set");
exit();
}
$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'. Может я сделал что-то не верно?
 
Старый 29.11.2006, 13:55   #4
ILA

Из хелпа к PHP:

The special NULL value represents that a variable has no value. NULL is the only possible value of type NULL.

Note:
The null type was introduced in PHP 4

A variable is considered to be NULL if

it has been assigned the constant NULL.

it has not been set to any value yet.

it has been unset().

Syntax
There is only one value of type NULL, and that is the case-insensitive keyword NULL.

copy to clipboard
$var = NULL;
 
Старый 29.11.2006, 14:31   #5
Тоже не работает, выдает ту же ошибку.
Код:
<?php
. . .
$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.

Может еще кто-нибудь подскажет, как правильно выполнить этот запрос?
 
Старый 30.11.2006, 14:25   #6
Просто напишите слово NULL в запросе:
$Query="INSERT into MyTable values('$id', NULL)";

Ну или как вариант:
$birthdaydate='NULL';
$Query="INSERT into MyTable values('$id', $birthdaydate)";
 
Старый 30.11.2006, 14:59   #7
Цитата:
deMone: Ну или как вариант:
$birthdaydate='NULL';
$Query="INSERT into MyTable values('$id', $birthdaydate)";
Выходит сообщение об ошибке:
Incorrect date value: 'NULL' for column 'BirthDay' at row 1.
Само поле имеет тип Date, и туда никак нельзя пихнуть строковое значение (похоже PHP не распознает 'NULL').
 
Старый 01.12.2006, 08:31   #8
ILA

А нафига в кавычки-то брать?
Вот так должно работать:
$birthdaydate=NULL;
$Query="INSERT into MyTable values('$id', $birthdaydate)";
 
Старый 01.12.2006, 08:34   #9
Так оно работать не будет, потому что у PHP NULL — это пустота. И вставка NULL-переменной в строку будет пустотой.
А у SQL NULL — это ключевое слово.

Вот посмотрите, Ваше NULL:
Код:
<?
$a=NULL;
$b='a' . $a . 'a';
echo $b;
?>
Выводит «aa». Поэтому кавычки нужны, мы задаём ключевое слово, а не тип данных PHP.

Ну а «Incorrect date value: 'NULL' for column 'BirthDay' at row 1.» говорит о том, что Вы не разрешили для этого поля задавать значение NULL.
 
Старый 01.12.2006, 12:18   #10
Цитата:
ILA:
А нафига в кавычки-то брать?
Вот так должно работать:
$birthdaydate=NULL;
$Query="INSERT into MyTable values('$id', $birthdaydate)";
Убрал кавычки и NULL вставился нормально, но теперь не вставляется дата, если ее установить:

$birthdaydate = "NULL";
$Query="INSERT into MyTable values('$id', $birthdaydate)";
//работает

$birthdaydate = "2006-12-1";
$Query="INSERT into MyTable values('$id', $birthdaydate)";
//не работает - Incorrect date value.

$birthdaydate = "2006-12-1";
$Query="INSERT into MyTable values('$id', '$birthdaydate')";
//работает, но приходится ставить кавычки, вообщем замкнутый круг получается

Если убрать кавычки со всех переменных:
$birthdaydate = "2006-12-1";
$Query="INSERT into MyTable values($id, $birthdaydate)";
//не работает - You have an error in your SQL syntax

Как сделать правильный запрос не знаю.
 
Старый 01.12.2006, 12:18
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как базу данных импортировать в MySQL? anton ASP, Perl, PHP и MySQL 3 03.08.2007 13:01
Как создать базу даных MySQL? baho ASP, Perl, PHP и MySQL 2 26.01.2006 12:18
Как импортировать базу данных на MySQL сервер… anton ASP, Perl, PHP и MySQL 1 10.11.2005 16:00
Как Переместите файл базу данных mysql Katee11 ASP, Perl, PHP и MySQL 3 19.06.2003 21:14


Текущее время: 05:59. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум