Mysql
 sql >> база данни >  >> RDS >> Mysql

Вмъкнатият IP в MySQL база данни се променя всеки път

След като прочетох коментарите и малко проучване, намерих отговора и той е прост.

На 32-битови системи ip2long() връща отрицателни и положителни цели числа, но INET_NTOA() работи само с положителни цели числа. Така че имате две възможности да коригирате това:

  1. Променете вашия PHP код:$ip = sprintf('%u', ip2long($_SERVER['REMOTE_ADDR']));
  2. Променете вашата SQL заявка:... AND ip = " . ip2long($_SERVER['REMOTE_ADDR']) . " ...

Можете да проверите този факт по следния начин:

$ip  = $_SERVER['REMOTE_ADDR'];
$int = ip2long($ip);    
var_dump($ip, $int, sprintf('%u', $int));

Това създава следния резултат:

string '192.168.1.120' (length=13)
int -1062731400
string '3232235896' (length=10)

След това отидете на MySQL:

mysql> SELECT '192.168.1.120', INET_NTOA(-1062731400), INET_NTOA(3232235896)
+---------------+------------------------+-----------------------+
| 192.168.1.120 | INET_NTOA(-1062731400) | INET_NTOA(3232235896) |
+---------------+------------------------+-----------------------+
| 192.168.1.120 | NULL                   | 192.168.1.120         |
+---------------+------------------------+-----------------------+
1 row in set (0.00 sec)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Зареждане на 5 милиона реда в Pandas от MySQL

  2. Генерирайте уникален дълъг идентификатор за изглед в MySql

  3. грешки в програмата GWT Hibernate 2

  4. операторът select винаги връща последния вмъкнат ред в php mysql

  5. Как да предам таблица като параметър на MySqlCommand?