mysql 5.5 - How should I properly store and retrieve IPs? -
मेरे पास एक कॉलम अब मैं इस अवधि की खोज करना चाहता हूं: या <पूर्व> दोनों ही मामलों में, मौजूदा प्रविष्टि नहीं मिली है: MySQL ने एक खाली परिणाम सेट (अर्थात शून्य पंक्तियाँ) लौटाया। (क्वेरी को 0.0001 सेकंड लिया गया) अल्पविराम के साथ एक ही समस्या। असल में, मेरा इरादा आईपी पते को 125.50.75.80 जैसे स्टोर करना है, लेकिन मैंने उबला हुआ एक विराम चिह्न के लिए खोज करने में असमर्थता नीचे समस्या मैंने कोशिश की '\।' भी कोई लाभ नहीं। और यह literals के साथ एक समस्या है; समय के साथ स्ट्रिंग युक्त वेरिएबल्स के साथ क्या करना है? अद्यतन: मैंने टेबल के साथ कमांड लाइन में बनाए गए डेटाबेस में परीक्षण किया है: और सबकुछ ठीक काम करती है मुझे संदेह है कि मेरे डेटाबेस में phpMyAdmin के साथ कुछ गलत है: आपके शायद आप दो आईपीवी 4 को स्टोर करने के लिए फिर आप उपयोग करेंगे एक आईपीवी 4 को शामिल करने के लिए: तब आप इसे इस तरह पढ़ सकते हैं:
उपयोगकर्ता है > उपयोगकर्ता प्रकार
VARCHAR (15) से। मैं इसे में एक अवधि सम्मिलित कर सकता हूँ:
INJECT IN 'एलजे`। यूज़र (`उपयोगकर्ता') VALUES ('।')
SELECT * से 'उपयोगकर्ता' जहां 'उपयोगकर्ता' की तरह '।'
SELECT * से 'उपयोगकर्ता' जहां 'उपयोगकर्ता' = '।'
बनाओ टेबल एलजे। यूज़र (उपयोगकर्ता VARCHAR (15));
VARCHAR कॉलम के साथ वर्तमान मुद्दा एक ऐसा कॉलेट प्रकार है जिसका उपयोग आप
armscii8_general_ci का उपयोग कर रहे हैं जो कुछ संग्रहीत वर्णों जैसे कि अल्पविराम और डॉट को धर्मान्तरित करते हैं।
utf8_general_ci का प्रयोग करना चाहते थे जो आपकी इच्छित परिणाम देगा:
VARCHAR का उपयोग नहीं करें,
INT अहस्ताक्षरित का उपयोग करें और फिर आप IPv4 की वापसी / डालने / तुलना करने के लिए उपयोग और कार्य कर सकते हैं।
टैब उपयोगकर्ताओं को बनाएँ (user_ip INT अहस्ताक्षरित);
उपयोगकर्ता (user_ip) मूल्यों में INSERT (INET_ATON ('125.50.75.80'));
चुनें INET_NTOA (user_ip) उपयोगकर्ताओं से जहां यूज़र_प = INET_ATON ('125.50.75.80')
Comments
Post a Comment