Bound SQL query parameters can be used only for a value, not an expression or a function call. So when you do this:
$remote_ip = "INET_ATON('$ipaddr')";
It binds the string "INET_ATON('value of $ipaddr')", not the result of a SQL function by that name. When a string value is inserted to an integer column, MySQL takes the numeric value of any leading digits, and in this case there are no leading digits. So the value 0 is inserted.
I would recommend you use PHP's built-in function
$remote_ip = ip2long($ipaddr);
mysqli_stmt_bind_param($stmt, 'ss', $email, $remote_ip);
$remote_ip is now an integer, I've read that mysqli has trouble binding unsigned integers, so you should just use 's' as the type when you bind.
Re your comment: You're right, because PHP doesn't support unsigned integers,
ip2long() will return a negative number if your IP address is 188.8.131.52 or greater. You can convert to a string representation of the unsigned integer with
$addr = '192.168.1.1';
$ip = ip2long($addr);
$ip = sprintf("%u", ip2long($addr));
// string(10) "3232235777"
// string(11) "192.168.1.1"