Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: запрос UPDATE
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » запрос UPDATE

Страниц (1): [1]
 

1. Эльф - 29 Сентября, 2006 - 23:56:13 - перейти к сообщению
Цитата:
SQL-запрос :

UPDATE magic SET attarget = '1' WHERE index = '2'

Ответ MySQL:

You have an error in your SQL syntax near 'index='2'' at line 1

Пожалуйста, скажите, что тут нетак? я уже и так и этак...
2. valenok - 03 Октября, 2006 - 14:21:02 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1.  
  2. UPDATE `magic `SET `attarget` = 1 WHERE `index` = 2
  3.  
3. Эльф - 03 Октября, 2006 - 14:35:05 - перейти к сообщению
valenok пишет:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. UPDATE `magic `SET `attarget` = 1 WHERE `index` = 2
  3.  

не... я уже давно разобрался, ошибка была в другом. Дело в том, что почему-то нельзя делать ключевое поле с именем "index". Переименовываю в "id" и всё замечательно работает.

Хочу также отметить такую мелочь - если в имя поля объявлено с пробелами, то ковычки обязательны иначе - можно обращатся без кавычек.
4. valenok - 03 Октября, 2006 - 15:49:28 - перейти к сообщению
=)
Можно всё что угодно если знаешь как.
5. evgenijj - 04 Октября, 2006 - 08:36:18 - перейти к сообщению
Цитата:

не... я уже давно разобрался, ошибка была в другом. Дело в том, что почему-то нельзя делать ключевое поле с именем "index". Переименовываю в "id" и всё замечательно работает.

INDEX - ключевое слово, и его в качестве имен полей использовать нельзя. Еще один пример:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. SELECT id, title FROM mytable WHERE id<10 ORDER BY order;
  3.  

MySQL будет выдавать ошибку. В качестве имени поля использовано ключевое слово ORDER.
6. valenok - 04 Октября, 2006 - 08:57:31 - перейти к сообщению
Теперь попробуй так:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. SELECT `id`,` title` FROM `mytable` WHERE `id`<10 ORDER BY `order`;
  3.  
7. Эльф - 04 Октября, 2006 - 12:27:12 - перейти к сообщению
CODE (text):
скопировать код в буфер обмена
  1. SELECT `id`,` title` FROM `mytable` WHERE `id`<10 ORDER BY `order`;

Да, и теперь всё в ажуре, всё работает.
8. f0rm4t - 16 Октября, 2006 - 20:55:12 - перейти к сообщению
Ну это само собой. В любом языке программирования (ну и запросов) запрещено использование зарезервированных слов в качестве имен функций, переменных, констант и т.д.

 

Powered by ExBB FM 1.0 RC1