alhames.ru
И сразу второй вопрос, пока не забыл)

Как хранить IP в базе данных?
Лично я использовал функции ip2long() и long2ip(), но проблема заключается в том, что я понятия не имею какой тип поля задать. В INT все ip-шники врятли вместятся, а INT UNSIGNED задать не могу, т.к. к примеру ip2long('255.255.255.255') == -2. Пока что поставил BIGINT, но тут явно запас слишком большой..

Нашел вот такой материал:
Для хранения IP в базе воспользуйтесь двумя функциями, INET_ATON что бы добавить
SELECT INET_ATON('127.0.0.1'), INET_ATON('127.1');
-- 2130706433, 2130706433

и INET_NTOA что бы получить
SELECT INET_NTOA(3520061480);
-- '209.207.224.40'

или выбрать промежуток
SELECT * FROM Sessions WHERE ip_address
BETWEEN INET_ATON('192.168.0.1') AND INET_ATON('192.168.0.255');

PS: поле под ip_address должно быть int


Но что-то недопонял - командой SELECT добавить?? И даже если так, то куда она в приведенных примерах будет записывать ip?

Комментарии
10.08.2009 в 19:39

Крайне злопамятное хамло ;)
У меня все в варчарах))
10.08.2009 в 19:57

Всё будет Кока-Кола.
Я храню в строках. )
Потому что возможность агрегировать адреса пользователя и производить поиск мультиботов гораздо важнее и полезнее чем выбор адресов по маске.
10.08.2009 в 20:16

SHIFT_design
VARCHAR(15) - если надо поменьше места
CHAR(15) - если побыстрее
:)
10.08.2009 в 20:38

alhames.ru
Хех.. Строки значит..
Ладно, наверное я тож так поступлю, пока приведенные выше функции не доработают до ума +)
10.08.2009 в 20:47

Всё будет Кока-Кола.
alhames да прибудет с тобой LIKE.
10.08.2009 в 21:09

Крайне злопамятное хамло ;)
Джей Ди Только хотел это сказать :-D
10.08.2009 в 21:41

There I was on a July morning, Looking for love
alhames
Советую, как и многие остальные, VARCHAR . И вообще пиво будет получше MYSQL, так что делайте все на пиве.
10.08.2009 в 22:22

Всё будет Кока-Кола.
Объясните непросвешенному зачем хранить адреса в таблице в виде чисел? Что бы складывать?
10.08.2009 в 22:54

alhames.ru
да прибудет с тобой LIKE.
Ага)

Объясните непросвешенному зачем хранить адреса в таблице в виде чисел?
Экономия байтов)
10.08.2009 в 22:56

Всё будет Кока-Кола.
alhames ёпт... Экономите на спичках.
11.08.2009 в 02:36

There I was on a July morning, Looking for love
Джей Ди
Пока в базе 100 строк - да.
Как будет 10000 - ты за эти байты глотку кому хочешь перегрызешь.
11.08.2009 в 03:03

Всё будет Кока-Кола.
SpiritEagle у меня сейчас около полумиллиона, и живу себе. ) Более 100000 строк означает что проект перерос стадию бесплатного хочтинга и требует выделенный сервер.
11.08.2009 в 03:56

There I was on a July morning, Looking for love
Джей Ди
Знаю по опыту: сверхоптимизация (и в первую очередь в плане MySQL) способна уменьшить нагрузку, оказываемую порталом на сервер, в 3 раза.
12.08.2009 в 06:31

varchar(15)
Командой SELECT делают выборку из таблицы, добавляют командой INSERT IGNORE, правят командой UPDATE
12.08.2009 в 10:04

alhames.ru
technocrat
Командой SELECT делают выборку из таблицы, добавляют командой INSERT IGNORE, правят командой UPDATE
Ды я и сам это прекрасно знаю, поэтому и удивился, почему "добавляют" SELECT'ом.. Хотя судя по комментариям опечатки не было.
18.01.2010 в 15:54

Школотень.

Выборка и сравнение int и varchar - в последнем случае врятли вы занимали каким-нибудь серьезным проектом. Иначе бы не допускали такого. Может, вы ещё и индексы не ставите и об их существовании не догадываетесь? И длины оставляете дефолтными?

Жаль, жаль.

Экономия на спичках до тех пор экономия на спичках, пока проект ваш - максимум хомпага кошки или страничка универа, сделанная для информатика по поводу купленной "пыхыпы для чайников".

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

Расширенная форма

Редактировать

Подписаться на новые комментарии
Получать уведомления о новых комментариях на E-mail