Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с MySQL в PHP

21K
13 июля 2007 года
BerdArt
10 / / 30.03.2007
Здравствуйте.
Возможно ли в PHP при удалении поля из таблицы в базе данных MySQL, сбрасывать значение ячейки со свойством auto_increment на ближайшее число. Например, есть строка со значением 5, за ней идет строка с номером 7, т.к. 6-ая была удалена ранее. Теперь если удалить 7-ую строку, то когда будем добавлять в эту таблицу новой значение, ее номер стал не 8, а 6.
Если не понятно объяснил, то попробую объяснить по-другому.
Заранее спасибо.
7.9K
13 июля 2007 года
vasa_c
191 / / 05.04.2007
В php можно отправлять запросы к mysql. Ничего из того, что не может делать данная версия mysql из php с ней не сделать.
Автоинкремент можно менять в служебных данных таблицы. Но делать этого не надо, а надо понимать, что такое автоинкремент и для чего он служит.
PHP FAQ: MySQL. Просто и понятно.
7.8K
13 июля 2007 года
Tingo
201 / / 17.05.2007
Если ты хочеш так сделать,
то это уже не будет auto_increment.

Надо поставить INT без auto_increment
и посылать два запроса
1) SELECT MAX(`id`) FROM `table1` - находить максимальный id
2) а потом вставлять в id уже максимальный
92
13 июля 2007 года
Тень Пса
2.2K / / 19.10.2006
вопрос: а зачем это нужно? :confused:

- если потом трудно и не красиво выводятся индексы строк в таблице ) то для такого случая это более чем глупо.
- для сортировки... да всё равно будет работать сортировка, даже если id не по порядку, ну это же AUTO_INCREMENT....

для чего такое понадобилось даже не представляю....

по-моему вы что-то перемудрили... :)
16K
14 июля 2007 года
OlbanyRok
75 / / 14.07.2007
Для некоторых ситуаций это необходимо бывает (правда с ходу не скажу, для каких :) но когда-то я что-то в этом роде делал.
Автоинкремент на то и авто, что ничего ты не сделаешь. Заводи целое поле и организуй процедуру его заполнения/индексирования/поиска.
256
17 июля 2007 года
foxweb
1.0K / / 27.07.2005
2 BerdArt, OlbanyRok

Всё это не нужно, всё от неграмотного проектирования и ограниченности мышления (не в обиду). Во-первых, такой алгоритм реализован далеко не случайно, так как автоинкрементные поля предназначены для индексации. Если производить подобную замену, это нарушит целостность данных.

Скажем раньше у тебя в таблице "типа оборудования" было 1;Видеокарты, 2;Процессоры, 3;Жесткие диски... Теперь представь, у тебя 20000 позиций оборудования с этими типами. Удалишь ты "Жесткие диски", а на его место поставишь какие нибудь "Кулеры". И что получится - целостнось данных будет нарушена. Это конечно самый простой пример, в сложных БД последствия могут быть гораздо хуже...

Вывод: если уж прям убейся как нужен какой-то строгий порядок, нумерация - сделай одтельное поле, но индексы на рабочей базе менять глупо и опасно.

С индексами можно играть в случае, если InnoDB и есть физические каскадные связи между полями двух таблиц. Тогда при смене индекса в одной таблице автоматически будет меняться и в другой.
27K
19 июля 2007 года
FRAIer
5 / / 16.04.2007
Только начал делать регистрацию на php. Возникла проблема: при заполнении полей рагистрации русскими буквами mysql выдает ошибку "Data too long for column 'name' at row 1". Если заполняешь английскими - все впорядке.
Кодировка полей : "cp1251_general_ci". Вроде должно работать.
31K
22 июля 2007 года
wgrek
5 / / 22.07.2007
Чуть припозднился с ответом - 3 месяца прошло.

При использовании кодировки UTF-8 в html, все латинские буквы имеют длину 1 байт, а русские - по 2 байта.
Когда пишешь инфу с русскими буквами, например Коля, то в базу пишется 8байт невзирая на cp1251_... в базе.
Есть 3 выхода:
1. Использовать кодировку Windows-1251 в html
2. Перед записью строки в базу воспользоваться функцией iconv
3. Перед записью задать директивами MySQL SET character_set_client и SET character_set_results перекодировку информации, но что-то этот способ у меня не работает
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог