Не могу поместить IP-адрес в базу данных - PullRequest
2 голосов
/ 11 мая 2011

Я пытаюсь поместить ip-адрес в мою базу данных. Если я сделаю эхо, как это:

echo $_SERVER['REMOTE_ADDR'];

Но если я пытаюсь поместить его в переменную или в базу данных, он ничего не дает, поэтому в моей базе данных он говорит: NULL Команды, которые я использовал для этого:

$ip = $_SERVER['REMOTE_ADDR'];
mysql_query("UPDATE users SET last_ip='".$ip."' WHERE id=".$row['id']) or die(mysql_error());

Я не знаю, что я делаю не так. Может ли кто-нибудь помочь мне с этим, пожалуйста?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 11 мая 2011

Вы захотите сделать свой last_ip столбец int(10) unsigned, а затем изменить UPDATE на:

$SQL = "UPDATE users 
        SET last_ip = INET_ATON('$ip')
        WHERE id='{$row['id']}'";

Тогда при выборе вы будете использовать:

$SQL = "SELECT INET_NTOA(last_ip) AS last_ip 
        FROM users";

Это преобразует IP-адрес в целое число для эффективного хранения. Для получения дополнительной информации см. Справочные страницы MySQL для INET_ATON() и INET_NTOA().

В противном случае, если вы хотите, чтобы он был сохранен в виде текста, а не наиболее эффективным способом, вы можете установить для столбца last_ip значение char(16) и продолжать использовать запрос UPDATE, который вы разместили в своем вопросе.

1 голос
/ 11 мая 2011

Ваш код правильный и должен работать.Если не указано @wallyk, тип данных поля ip не поддерживается.

Однако, просто чтобы убедиться, что условие WHERE заключено в ' (одинарная кавычка), попробуйте.

...