Insert со значением default

iolke

Новичок
В бд в поле - default =5, почему после insert в поле с default встаёт 0, а не 5????

Какая то ошибка в insert, кавычки или что??
 

iolke

Новичок
Или в sql ????почему пустое поле считает заполненной нулем??
 

jonjonson

Охренеть
Вам лучше знать. У меня, если я не указываю в запросе поле, то значение в нем по дефаулт
 

iolke

Новичок
Insert into w values (‘ “.$_POST[ ‘color’].” ‘);

Посмотрите ошибку ?
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Я не знаю как база, но я такой запрос бы нахрен послал. Какую колонку ты хочешь вставить, какие там поля - известно только тебе.

И на будущее, научишь формулировать свои вопросы, чтобы тебя могли понять здесь.
 

iolke

Новичок
Запрос


$query = "INSERT INTO w VALUES (
NULL,
'".$_POST['variety']."',
'".$_POST['lenght']."',
'".$_POST['color']."',
REPLACE('".$_POST['price']."', ',','.'),
'".$_POST['min_quantity']."',
'$image',
'".$_POST['id_f']."')";
 

iolke

Новичок
CREATE TABLE `w` (
`id_ecr` int(12) NOT NULL,
`variety` text NOT NULL,
`lenght` enum('40','50','60','70','80','90','100','110','120') NOT NULL,
`color` enum('red','white','yellow','orange','peach','pink','hotpink','lavender','green','bicolor') NOT NULL,
`price` decimal(8,2) NOT NULL DEFAULT '0.00',
`min_quantity` int(12) NOT NULL DEFAULT '25',
`img` text NOT NULL,
`id_f` int(12) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;
 

WMix

герр M:)ller
Партнер клуба
это совершенно нормальное поведение
если $_POST['min_quantity'] пустое поле, то для числовых полей оно равно 0
Код:
mysql> select '' = 0;
+--------+
| '' = 0 |
+--------+
|      1 |
+--------+
1 row in set (0,01 sec)
default value будет установленно если при insert это поле не перечислять
Код:
mysql> INSERT INTO `w` (`id_ecr`, `variety`, `lenght`, `color`, `img`, `id_f`) VALUES (1, '', '40', 'red', '', 1);
Query OK, 1 row affected (0,00 sec)

mysql> select * from w;
+--------+---------+--------+-------+-------+--------------+-----+------+
| id_ecr | variety | lenght | color | price | min_quantity | img | id_f |
+--------+---------+--------+-------+-------+--------------+-----+------+
|      1 |         | 40     | red   |  0.00 |           25 |     |    1 |
+--------+---------+--------+-------+-------+--------------+-----+------+
1 row in set (0,00 sec)
 

fixxxer

К.О.
Партнер клуба
можно и перечислить, но вместо значения воткнуть DEFAULT (без кавычек)
 

iolke

Новичок
Спасибо всем за разъяснения.

Не совсем у меня решился вопрос -

Задача была такая, пользователь должен ввести в поле значение кратное 25 и больше 25, если ничего не ввёл, то по умолчанию должно было встать 25 - я думала можно было добиться вставки default из бд

По вашим комментам, я поняла что никак так сделать нельзя собственными средствам sql.

Верно?
P.s - зачем в sql - default,

Единственное решение не очень мне нравится - php проверки на заполненность поля, и вставка нужного если поле пустое.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
А скажи мне, вот если ты думала, то расскажи логику работы базы с тем default, что у тебя?

Вот ты поставила 25, и дальше что? Как база узнает о твоих кратностях и прочем?
 

iolke

Новичок
С кратностью все понятно, проверила в php, формула и все. Я поняла, что все можно проверить в том числе и на 25.

Но

А с умолчанием, я рассчитывала что в sql зашит механизм замены пустого поля на default, в случае попытки записать таковое(пустое).

Странно когда ты ограничиваешь поля нот нулл и default, то sql вписывает вапще просто 0, первое условие отрабатывает а второе повисло.

Поэтому я думала , что есть какой то у меня косячок в коде, хитрость какая нибудь.
 
Сверху