Немного обо всем интересном
На главную Обратная связь Поиск
Главная
Форум
 
 
 
  Статьи Файлы Видео Кулинарные рецепты Города и Страны Разное  
Отдых и развлечения Юмор Видео, ТВ и музыка Непознанное Литература Спорт Игры Хобби
Окружающий мир Люди Страны и города География Флора и фауна Космос
Технологии Hardware Операционные системы Софт Интернет Мобильные устройства Сети и сетевая безопасность Разное
Дизайн и программирование Веб-строительство Дизайн и графика

Все статьи Список статей Добавить статью
 
Вниз
Зарезервированные (служебные) имена в MySQL и формах


Очень распространенная ошибка при составлении таблиц MySQL и форм. Это использования названий, которые являются служебными (зарезервированные) и используются синтаксисом запросов или форм.

При совершении таких ошибок, можно долго не понимать причину неработающей формы или запроса/записи в базу данных. Ведь все сделано правильно, а не работает.


Пример ошибочной таблицы MySQL:

CREATE TABLE `my_table` (
`id` int(10) NOT NULL auto_increment,
`user` text NOT NULL,
`show` text NOT NULL,
PRIMARY KEY (`id`)
) ;

Тут мы сделали таблицу, в которую хотим записывать имя пользователя и в зависимости от show, показывать его или нет. Вроде все сделали верно, и назвали все своими именами. И без проблем сделаем запись в таблицу:

INSERT INTO my_table values (NULL, '$user', '$show')

Но при определенном запросе:

SELECT id, user FROM my_table WHERE show = '1'

Результата не будет и можно долго не понимать, почему же не работает. А не работает, потому что имя show используется в синтаксисе MySQL для построения запросов.

В этом случае проблему можно решить 2мя способами:

1. Это присвоить таблице и ее полям суффикс:

SELECT d.id, d.user FROM my_table as d WHERE d.show = '1'

2. Заключить имя show в ковычки.

SELECT id, user FROM my_table WHERE `show` = '1'

К именам, использующимися MySQL относятся : show, select, from, by, limit, update и т.д. Более подробно можно в справочнике по MySQL. И при использовании их, стоит добавлять суффикс или ковычки. В противном случае такой запрос работать не будет, и можно потратить массу времени на выяснении причины.


Теперь немного про формы.

Однажды столкнулся с проблемой (делая викторину на этом сайте), когда форма работала, но только находясь в корне. Т.е. несмотря на указанный путь (form action=”mod.php?n=Victorna”) вела на главную сайта. Проблему решал очень долго, консультируясь с разными людьми, спрашивая на форумах и перебирая весь код, дабы отыскать ошибку.

А проблема заключалась в поле ввода имени пользователя:

<input type="text" name="name">

Т.е. вот такой забавный баг, из-за присвоения текстовому полю служебного имени name.

Масса потраченного времени, всего из-за названия. Хотя на первый взгляд, кажется, что можно обзывать все любыми именами.


В других языках наверняка есть свои системные имена, которые нельзя или нежелательно использовать. Будьте внимательны. И если вы все сделали правильно, а результата нет, проверьте, не присвоили ли вы запрещенные имена в своем творении.



Автор статьи Alexander-V-Sh
http://interesnoe.info

Данные:
Просмотров: 4591
Рейтинг: 10
Голосов: 1
Средний бал: 10
Комментариев: 1
Добавлен: 03.03.2008

Оценить:

Функции:



Шрифт:   +  -

Автор: Alexander-V-ShРазместил: Alexander-V-Sh
Посмотреть все статьи этого пользователя
Комментарии:

Разместил пользователь Alexey Kang04.03.2008

Теперь буду осторожным
 
Добавить комментарий:

Оставлять комментарии могут только зарегистрированные пользователи.
Возможно заинтересует: • 
Вверх
2006-2010 Интересное.инфо.
При использовании или копировании материалов не забываем ссылку на http://interesnoe.info