Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > невставляются данные в бд. Ошибка INSERT


Автор: Enya 11.11.2006, 16:33
Нет, ну это уже издевательство.
Вот таблица
Код

CREATE TABLE `apartment` (
  `id_r` int(11) NOT NULL default '0',
  `adress` varchar(100) NOT NULL default '',
  `nr` int(11) NOT NULL default '0',
  `rajon` varchar(64) NOT NULL default '',
  `area` int(11) NOT NULL default '0',
  `description` text NOT NULL,
  `add_date` varchar(100) NOT NULL default '0000-00-00 00:00:00',
  `status` enum('1','0') NOT NULL default '0',
  `price` int(11) NOT NULL default '0',
  `lang` varchar(12) NOT NULL default '',
  `order` int(11) NOT NULL default '0',
  `fluor` int(11) NOT NULL default '0',
  `house_type` varchar(64) NOT NULL default '',
  `property_type` varchar(100) NOT NULL default '',
  `seria` varchar(100) NOT NULL default '',
  `comfort` varchar(100) NOT NULL default '',
  `toilet` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`id_r`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251; 

Вот запрос:
Код

$sql="INSERT INTO `apartment` (adress, nr, rajon, area, description, add_date, price, lang, order, fluor, house_type, property_type, seria, comfort, toilet) VALUES ('$adress','$nr','$rajon','$area','$description','$add_date','$price','$lang','$order','$fluor','$house_type','$property_type','$seria','$comfort','$toilet')";

А вот ошибка:
Цитата

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order, fluor, house_type, property_type, seria, comfort, toilet) VALUES ('','','' at line 1

Ну, и где я ошиблась? Ведь всё же правильно. Я же с INSERT уже работала, всё ок. smile  smile 

Автор: ZlojEzh 11.11.2006, 18:34
названия полей стоит заключать в обратные кавычки: `order`
просто order - это зарезервированное слово

Автор: mr.Anderson 11.11.2006, 18:43
И если ты вводишь значения во ВСЕ поля таблицы ПО ПОРЯДКУ их объявления в структуре самой таблицы, то при написании команды INSERT их можно не перечислять, только их значения. То есть:
Код

INSERT INTO YourTable Values( '...', '...', ... );

Автор: check 11.11.2006, 19:09
И все таки старайся подставлять переменные в запрос вот так
Код

$sql="INSERT INTO `apartment` (adress, nr, rajon, area, description, add_date, price, lang, order, fluor, house_type, property_type, seria, comfort, toilet) VALUES ('".$adress."','".$nr."','".$rajon."','".$area."','".$description."','".$add_date."','".$price."','".$lang."','".$order."','".$fluor."','".$house_type."','".$property_type."','".$seria."','".$comfort".','".$toilet."')";

Автор: Enya 11.11.2006, 19:10
ZlojEzh, действительно, но синтаксическая подсветка не выделила его. Вот же блин, как бывает.

sim7, нет, я id опускаю. и ещё одно у меня там поле есть, которое идёт по умолчанию..
Спасибо.

Автор: Powerhead 13.11.2006, 20:16
Просто возьми за правило имена полей и таблиц заключать в `такие_кавычки`
И если id опускаешь, можно просто в value написать пустое значение в кавычках '' 
то же самое касается и значений по-умолчанию.

Код

$sql="INSERT INTO `apartment` 
      VALUES ('',
              '$adress',
              '$nr',
              '$rajon',
              '$area',
              '$description',
              '$add_date',
              '$price',
              '$lang',
              '$order',
              '$fluor',
              '$house_type',
              '$property_type',
              '$seria',
              '$comfort',
              '$toilet',
              )
      ";

Автор: Shark 13.11.2006, 20:24
а нафига его опускать???? неужели трудно цифру 0 поставить и все???и не будет тогда таких вопросов

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)