Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблемы с DEFAULT
 
 автор: antf   (15.09.2005 в 21:28)   письмо автору
 
 

Здравствуйте, возникают проблемы при выполнении запроса:

$query = "INSERT INTO news VALUES
(DEFAULT, '{$news_title}', '{$news_text}', '{$news_date}', {$news_pos}, '{$news_visibility}')";

Таблица news определяется так:

CREATE TABLE news (
id_news int(32) not null auto_increment,
news_title varchar(255),
news_text mediumtext,
news_date varchar(255),
news_pos int,
news_visibility enum('visible', 'invisible'),
PRIMARY KEY (id_news)
);

Примерное содержимое $query:
INSERT INTO news VALUES (DEFAULT, 'test', 'test', '15 09 2005', 1, 'visible')

Выдает ошибку:
You have an error in your SQL syntax near 'DEFAULT, 'test', 'test', '15 09 2005', 1, 'visible')' at line 2

Если заменить DEFAULT на какое-нибудь число, скажем, 23 – запрос выполняется. Такая же ситуация с похожим запросом возникает в других подсистемах сайта. UPDATE, DELETE работают корректно. Не подскажите в чем может быть причина.
Заранее спасибо за ответ.

   
 
 автор: Artemy   (15.09.2005 в 21:43)   письмо автору
 
   для: antf   (15.09.2005 в 21:28)
 

DEFAULT используеться при создании таблицы, например:

mysql> CREATE TABLE news (
id_news int(32) not null auto_increment,
news_title varchar(255),
news_text mediumtext,
news_date varchar(255),
news_pos int DEFAULT 999,
news_visibility enum('visible', 'invisible'),
PRIMARY KEY (id_news);


В Вашем случае запрос для добавления записи должен выглядеть так:
mysql> INSERT INTO news VALUES ('', 'test', 'test', '15 09 2005', 1, 'visible');


Если я ошибаюсь меня может кто поправит!

   
 
 автор: cheops   (15.09.2005 в 23:06)   письмо автору
 
   для: Artemy   (15.09.2005 в 21:43)
 

Вообще рекомендуется писать NULL, хотя можно и 0 и пустую строку
mysql> INSERT INTO news VALUES (NULL, 'test', 'test', '15 09 2005', 1, 'visible');

Если вы хотите, чтобы поле приняло значение по умолчению, т.е. произошло инкрементное увеличение значение без явного указания значения поля, следует перед VALUES привести имена таблиц, опустив в нём id_news
mysql> INSERT INTO news (news_title,news_text,news_date,news_pos,news_visibility) VALUES ('test', 'test', '15 09 2005', 1, 'visible');

   
 
 автор: antf   (15.09.2005 в 23:27)   письмо автору
 
   для: cheops   (15.09.2005 в 23:06)
 

После замены Default на NULL все становится на свои места. Странно, я ведь очень долго использовал эту конструкцию, в том числе и на сайтах, которые были размещены на этом хостинге Peterhost. Проблем не было. Такую форму указания первичного ключа нашел, просматривая код какого-то скрипта и взял на вооружение.

   
 
 автор: cheops   (16.09.2005 в 01:23)   письмо автору
 
   для: antf   (15.09.2005 в 23:27)
 

А да действительно можно, но там была какая-то тонкость, не то с версией связаная, не то с тем, что поле должно быть объявлено с атрибутом DEFAULT... в общем было какое-то хитрое правило...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования