Код используется для обновления зарегистрированного пользователя IP-адреса. Когда я печатаю строку $ sql, кажется, что это правильно, IP-адрес равен 1886883852, но после обновления до mysql значение равно 2149463110. Я попытался установить тип данных в mysql как INT (11) bigint (12), все тот же. Если я попытаюсь написать строку как
UPDATE ddns SET LastIP=1886883852, LastUpdate=now() WHERE ID=1
напрямую, без использования какой-либо переменной, он работает правильно.
На самом деле не могу понять. Кто-нибудь может помочь?
//get dns function getIP(){ //check the current ip address registered //Test if it is a shared client if (!empty($_SERVER['HTTP_CLIENT_IP'])){ $ipaddr=$_SERVER['HTTP_CLIENT_IP']; //Is it a proxy address }elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){ $ipaddr=$_SERVER['HTTP_X_FORWARDED_FOR']; }else{ $ipaddr=$_SERVER['REMOTE_ADDR']; } $ipaddr = ip2long($ipaddr); return $ipaddr; } $ipaddr = getIP(); $sql = "UPDATE ddns SET LastIP=$ipaddr, LastUpdate=now() WHERE ID=1"; echo $sql; **//here UPDATE ddns SET LastIP=1886883852, LastUpdate=now() WHERE ID=1** $result = mysqli_query($dbh,$sql) or die("Query failed:"); **//Here after updated, the value of ipaddr in database is 2149463110** if ($result) echo "Update ddns successfully"; else echo "faild to update ddns";