प्रिय सभी।अंतराल और real_escape_string का उपयोग जब पूर्णांक sanitizing
मैं mysql डेटाबेस के कुछ तालिकाओं में पूर्णांक पीके का उपयोग कर रहा हूं। PHP स्क्रिप्ट से इनपुट से पहले, मैं कुछ sanitizing कर रहा हूँ, जिसमें अंतराल ($ आईडी) और $ mysqli-> real_escape_string() शामिल है।
प्रश्नों काफी सरल
insert into `tblproducts`(`supplier_id`,`description`) values('$supplier_id','$description')
इस उदाहरण में कर रहे हैं, $ वर्णन करते हुए $ केवल intval() 'एड किया जा रहा supplier_id, real_escape_string() के माध्यम से चला जाता है।
यदि कोई परिस्थिति है, तो मुझे केवल जिज्ञासा है, जब मुझे अंतराल और real_escape_string को पूर्णांक में लागू करने की आवश्यकता है, तो मैं डीबी में डाल रहा हूं? तो मूल रूप से मुझे वास्तव में उपयोग करने की ज़रूरत है?
$supplier_id = intval($mysqli->real_escape_string($supplier_id));
धन्यवाद।
यदि आप तैयार बयानों का उपयोग करना चाहते हैं तो डेटा प्रकारों को स्वच्छ करने और सुनिश्चित करने के साथ सभी अपर्याप्त प्रयास अनावश्यक होंगे। बहुत आसान है। – mario
आपकी टिप्पणी के लिए धन्यवाद। मूल रूप से डीबी कक्षाओं को पूर्व बयानों के बिना विकसित किया गया था, इसलिए मुझे अंतर्निहित कक्षाओं को दोबारा करने की जरूरत है और एक ही समय में कार्यरत बुनियादी ढांचे को तोड़ना नहीं है। तो मैं आपके द्वारा उल्लिखित कारणों के लिए पूर्व बयानों पर स्विच करने पर विचार कर रहा हूं, लेकिन सीधे नहीं :) – paulus
इसके अलावा, जहां तक मुझे पता है, प्री कथन, सबसे अधिक उपयोगी हैं जब सामूहिक प्रश्नों की बात आती है, जो आमतौर पर मामला नहीं है मेरी स्थिति। इसलिए मूल रूप से प्री कथन में स्विच करने से कोड की मात्रा बढ़ जाती है (अच्छी तरह से कमी नहीं होती है)> इसलिए कम पठनीयता और प्रदर्शन भी प्रश्न में है। मेरी राय के लिए, तैयारी कथन => बाइंड => निष्पादित करने के बजाय कभी-कभी अंतराल और real_escape_strings करना तेज़ होगा।जब तक कि मैं किसी प्रकार का सुपर-मेटा-डीबी-क्लास विकसित नहीं करूंगा जो सभी प्रश्नों का ख्याल रखेगा, जो मेरे मामले में स्क्रैच से कोड लिखने का मतलब होगा। – paulus