Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL डेटाबेस में डाला गया IP हर बार बदलता है

टिप्पणियों और थोड़ा शोध पढ़ने के बाद मुझे इसका उत्तर मिला और यह आसान है।

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. केस संवेदनशील होने के लिए मैसकल टेबल कॉलम को बदलना

  2. MySQL - अद्वितीय विदेशी कुंजी

  3. मैं MySQL पासवर्ड कैसे डिक्रिप्ट कर सकता हूं

  4. दोस्ती के रिश्तों को कैसे मॉडल करें

  5. mysql2 मणि ​​स्थापना विफल हो जाती है