गलत पूर्णांक (2147483647) को MySQL में डाला जाता है?

ठीक है, इसलिए मैं स्टीम वेब एपीआई के साथ काम कर रहा हूं, मेरे पास $steam64 नामक एक चर में संग्रहीत मानों में से एक है जब मैं इस कोड snipper का उपयोग INSERT करने के लिए एक mysql डेटाबेस में यह चर में संग्रहीत किया गया है की तुलना में एक completley अलग पूर्णांक डालें।

$sql_query = "INSERT INTO users_info (steam64) VALUES ('$steam64')";

var_dump($steam64); असली int देता है, तो यह गूंज करता है। यहां पर क्या हो रहा है, यह भी सुनिश्चित नहीं है कि किसी भी मदद की सराहना की जाती है।

वेब के समाधान से एकत्रित समाधान "गलत पूर्णांक (2147483647) को MySQL में डाला जाता है?"

यह शायद इसलिए है क्योंकि आप क्वेरी को दोहरे उद्धरण में लपेटते हैं, लेकिन वेरिएबल सिंगल कोट्स में हैं, इसलिए इसे एक शाब्दिक रूप में माना जा रहा है, और यदि कॉलम int है तो आपको 0 प्राप्त होगा।

इसे इस्तेमाल करे:

 $sql_query = "INSERT INTO users_info (steam64) VALUES ('" . $steam64 . "')"; 

इसके अलावा, इससे पहले कि मैं flamed हो, एसक्यूएल इंजेक्शन पर पढ़ने के लिए सुनिश्चित करें यदि आप चर सफाई नहीं कर रहे हैं सीधे एसक्यूएल बयान में पोस्ट किया जा रहा है।

— अद्यतन करें —

आपकी टिप्पणी के आधार पर "मान दिया जा रहा है"; जो संख्या आप सम्मिलित करने का प्रयास कर रहे हैं वह 32-बिट सिस्टम के लिए बहुत बड़ी है। 32-बिट के लिए अधिकतम 4,294,967,295 है , और 64-बिट के लिए अधिकतम 18,446,744,073,70 9,551,615 है । मैं अपने कॉलम को एक varchar(100) बजाय varchar(100) हैश में परिवर्तित करने की सलाह देता हूं या 64 बिट सिस्टम पर स्विच करता हूं यहां अधिकतम चीजों के बारे में महान लेख, और यहां ।

2147483647, mysql के लिए सबसे बड़ा इंट मान है I बस टाइप करने के लिए int से bigint को बदलने के लिए

जबकि मैं SQL और MySQL के साथ खेल रहा था उसी समस्या MySQL int डेटा प्रकार था इंट से बिल्टेंट तय किए गए मुद्दे पर डेटा प्रकार को संशोधित करना।

MySQL पूर्णांक प्रकार http://dev.mysql.com/doc/refman/5.7/en/integer-types.html

 ALTER TABLE tablename MODIFY columnname BIGINT; 

पूर्णांक प्रकार INT 4 ब्वाइट स्टोरेज है, आप -2^(4*8-1)=-2147483648 से 2^(4*8-1)-1=2147483647 , जब आप " हस्ताक्षरित " झंडे करते हैं, यदि आप बदलते हैं अहस्ताक्षरित के झंडे के लिए आपके पास 0 से 2^(4*8)-1 सीमा होगी MySQL समर्थन बिगिनटी 8 ब्वाइट स्टोरेज यदि आप अधिक से अधिक मूल्य को सहेजने का प्रयास करते हैं, तो आप श्रेणी के अधिकतम मूल्य को बचाएंगे

आपरेशनों-> टेबल विकल्पों पर जाएं -> कम से कम वेतन वृद्धि मूल्य या जो भी आप बढ़ाना चाहते हैं ..

autoincrement की बड़ी समस्या यह गलती से आखिरी प्रविष्टि से शुरू होती है अगर इसके बहुत बड़े मूल्य तब सम्मिलित मूल्य में समस्या शुरू होती है .. हमारे पूर्वनिर्धारित डेटाटाइप के साथ
यहां छवि विवरण दर्ज करें

डेटाटेप परिवर्तन के साथ INTEGER से BIGINT के साथ सहमत वर्तमान में, नोड। जेएस के साथ एक वेब ऐप का निर्माण / नीचे रिफैक्टर की सिक्वेलाइज करके फोन नंबर पोस्ट को रिएक्शन-रेडक्लिक फॉर्म से '2147483647' में हेरफेर किया गया।

 clientPhone: { type: DataTypes.BIGINT, allowNull: true }, 

डेटा प्रकार आईएनटी के लिए सबसे बड़ा मान 2147483647 है। यदि आप सम्मिलित कर रहे नंबर 2147483647 से बड़ा है, तो यह समस्या का कारण होगा। समाधान के लिए, INT से BIGINT तक डेटा प्रकार को बदलने के रूप में BIGINT का अधिकतम मूल्य 9223372036854775807 है, यह आपकी समस्या को हल कर सकता है। इस साइट पर एक नज़र डालें: https://dev.mysql.com/doc/refman/5.7/en/integer-types.html

सबसे आसान तरीका MySQL "int" में बदल जाता है "varchar"

 CREATE TABLE `dvouchers` ( `2147483647` int(3) NOT NULL auto_increment, `code` varchar(12) NOT NULL default '1', `type` char(1) NOT NULL default '$', `count` int(3) unsigned NOT NULL default '0', `amount` int(3) unsigned default '0', `notes` text, `expiryDate` date default NULL, `fkUserAdminId` int(11) NOT NULL default '0', PRIMARY KEY (`2147483647`), ) ENGINE=MyISAM DEFAULT CHARSET=latin1;