Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
Не тот ip написал, ошибся:userip = 2990890797
Уверен, что такой пользователь есть?
ложьНе тот ip написал, ошибся:
'178.69.92.45' должно равняться 2147483647 (что есть в БД)
А как самому перегнать адрес в это integer?
mysql> SELECT INET_ATON('178.69.92.45');
+---------------------------+
| INET_ATON('178.69.92.45') |
+---------------------------+
| 2990890029 |
+---------------------------+
1 row in set
Там столбик тако:ложь
Код:mysql> SELECT INET_ATON('178.69.92.45'); +---------------------------+ | INET_ATON('178.69.92.45') | +---------------------------+ | 2990890029 | +---------------------------+ 1 row in set
Поставь для поля userip тип Unsigned INT или BIGINT - скорее всего именно тут у тебя загвоздка
ALTER TABLE `ips` MODIFY COLUMN `userip` int Unsigned NULL;
Мускуль втихую "обрезал" при сохранении из-за недостаточный длинны поля. Поэтому и ловим "ложь" при сравнении.Походу в БД другой IP: 127.255.255.255
Видимо неправильно сохраняется.
Максимум этоВопрос решился, но не полностью. Проблема была в том, что у поля int(10), я поставил 12 и все сохраняется в БД теперь правильно. А сколько максимально нужно, чтобы сохранять все, какие только могут быть IP у посетителей сайта ?
mysql> show create table ips;
+-------+-----------------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-----------------------------------------------------------------------------------------------------+
| ips | CREATE TABLE `ips` (
`userip` int(1) unsigned DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+-------+-----------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)
mysql> select userip, INET_NTOA(userip) from `ips`;
+------------+-------------------+
| userip | INET_NTOA(userip) |
+------------+-------------------+
| 2990890029 | 178.69.92.45 |
| 4294967295 | 255.255.255.255 |
| 2990890797 | 178.69.95.45 |
+------------+-------------------+
3 rows in set (0.00 sec)
mysql> SELECT COUNT(*) as count FROM ips WHERE userip = INET_ATON('178.69.95.45');
+-------+
| count |
+-------+
| 1 |
+-------+
1 row in set (0.00 sec)
Это количество добавленных ноликов перед цифрой:Только осталось за кадром, как данные попали в БД.
Тогда тупой вопрос. Что означает цифра в скобках int(1)? Насколько я знаю, это кол-во знаков. А как туда поместилось кучу цифр?
Понял, что не понял, как говорят... а зачем вообще указывать это число, особенно в столбцах id (уникальный ключ)?Это количество добавленных ноликов перед цифрой:
Для просмотра ссылки Войдиили Зарегистрируйся
А за количество байт и соответственно максимальное значения поля int отвечают другие типы поля - tinyint, smallint, mediumint, bigint - Для просмотра ссылки Войдиили Зарегистрируйся