आपके सवाल का कोई आसान जवाब के रूप में व्यावहारिक रूप से यह शामिल अलग ढंग से काम करने के लिए जब आवेदन लिखा गया था करने के लिए हर सरल तरीका है।
यदि आपके पास अपने कोड में mysql_ * कार्यों के लिए सीधी कॉल है और कोई डेटाबेस एब्स्ट्रक्शन लेयर नहीं है जहां आप एक सहायक वर्ग या फ़ंक्शन के माध्यम से अपने प्रश्न पूछते हैं तो आपको प्रत्येक कमांड को संपादित करने की आवश्यकता होगी।
आप न सिर्फ mysql_query की तरह आदेश के लिए एक मैं जोड़ने के साथ प्राप्त कर सकते हैं के रूप में procedurally mysqli_query()
db जहां mysql_query()
साथ करता है, तो एक कनेक्शन सभी में दिया गया था, यह एक दूसरा पैरामीटर था के लिए लिंक होने के लिए पहले पैरामीटर की आवश्यकता है।
mysql_query (...) को mysqli_query ($ link, .....) में बदलने के बजाय मैं अनुशंसा करता हूं कि डीबी एब्स्ट्रक्शन परत को जगह में रखने के लिए कोई बेहतर समय न हो। तो कार्यों का उपयोग करें जैसे कि sql_query() जो वास्तव में भविष्य में आपके प्रश्नों को संसाधित करता है, यदि आपको फिर से डीबी को बदलने की आवश्यकता है तो आप डीबी विशिष्ट कमांड को एक अबास्ट्रक्शन फ़ाइल में अपडेट कर सकते हैं। इस तरह यदि आप एक ऐसा फ़ंक्शन लिखते हैं जो mysqli_query को लपेटता है तो आप अपने mysql_query() को अपने सहायक फ़ंक्शन में बस नामित करने में सक्षम हो सकते हैं और सहायक को वहां लिंक डालने के बारे में चिंता करने दें।
कि जबकि सबसे सरल तरीका है, यह मापदंडों बाँध या बयान जो एसक्यूएल इंजेक्शन को रोकने में एक प्रमुख कारक है
कमजोरियों एक बार जब आप इन सभी आदेशों आप परीक्षण की आवश्यकता को बदल दिया है तैयार नहीं होंगे।
यदि आपके पास कोई स्वचालित परीक्षण नहीं लिखा गया है तो शायद उन्हें लिखना शुरू करने का एक अच्छा समय है। भले ही आपको यह जांचने की आवश्यकता होगी कि प्रत्येक बदलाव ने काम किया है, यदि आप इसे स्वचालित परीक्षण द्वारा करते हैं तो आप भविष्य में उस दर्द से बच सकते हैं।
कोई आसान तरीका नहीं है। सभी स्क्रिप्ट की जांच करने और कॉल को प्रतिस्थापित करने की आवश्यकता है। और परीक्षण। – Aris
क्या आपके पास टेस्टर्स हैं? – DevZer0
मुख्य चीजें क्या बदलती हैं? बस पैरामीटर और कार्यों का नाम? और नहीं, मेरे पास बहुत सारे टेस्टर्स नहीं हैं ... – Jordy