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

बड़ी वेबसाइट को MySQL से MySQLi में बदलें

आपके प्रश्न का कोई आसान उत्तर नहीं है क्योंकि व्यावहारिक रूप से ऐसा करने के हर सरल तरीके में आवेदन लिखे जाने पर चीजों को अलग तरीके से करना शामिल है।

यदि आपके पास अपने पूरे कोड में mysql_* फ़ंक्शंस के लिए सीधी कॉल है और कोई डेटाबेस एब्स्ट्रैक्शन लेयर नहीं है जहाँ आप अपने प्रश्नों को एक सहायक वर्ग या फ़ंक्शन के माध्यम से करते हैं तो आपको प्रत्येक कमांड को संपादित करने की आवश्यकता होगी।

आप प्रक्रियात्मक रूप से mysqli_query() के रूप में mysql_query जैसे आदेशों में i जोड़ने से दूर नहीं हो सकते हैं डीबी के लिंक होने के लिए पहले पैरामीटर की आवश्यकता होती है जहां mysql_query() . के साथ यदि कोई कनेक्शन बिल्कुल दिया गया था, तो यह दूसरा पैरामीटर था।

केवल mysql_query(...) को mysqli_query($link,.....) में बदलने के बजाय, मैं अनुशंसा करता हूं कि डीबी एब्स्ट्रैक्शन परत को जगह में रखने के लिए कोई बेहतर समय नहीं है। तो फ़ंक्शंस का उपयोग करें जैसे sql_query() जो वास्तव में आपके प्रश्नों को संसाधित करता है ताकि भविष्य में यदि आपको डीबी को फिर से बदलने की आवश्यकता हो तो आप केवल एक अमूर्त फ़ाइल में डीबी विशिष्ट कमांड अपडेट कर सकते हैं। इस तरह यदि आप एक फ़ंक्शन लिखते हैं जो mysqli_query को लपेटता है तो आप अपने mysql_query() को अपने सहायक फ़ंक्शन में आसानी से नाम बदलने में सक्षम हो सकते हैं और सहायक फ़ंक्शन को लिंक डालने के बारे में चिंता करने दें।

जबकि यह सबसे आसान तरीका है, यह पैरामीटर को बाध्य नहीं करेगा या बयान तैयार नहीं करेगा जो एसक्यूएल इंजेक्शन भेद्यता को रोकने में एक प्रमुख कारक है

एक बार जब आप इन सभी आदेशों को बदल लेते हैं तो आपको परीक्षण करने की आवश्यकता होती है।

यदि आपके पास कोई स्वचालित परीक्षण नहीं लिखा गया है तो शायद उन्हें लिखना शुरू करने का यह एक अच्छा समय है। भले ही आपको यह जांचना होगा कि हर बदलाव काम कर गया है, अगर आप इसे स्वचालित परीक्षण से करते हैं तो आप भविष्य में उस दर्द से बच सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सशर्त ट्रिगर के लिए Django माइग्रेशन sql

  2. संयोजनों का अवैध मिश्रण MySQL त्रुटि

  3. GTID से पारंपरिक प्रतिकृति पर वापस जाएं

  4. MySQL इंसर्ट का प्रदर्शन एक बड़ी टेबल पर खराब हो जाता है

  5. SQLite MySQL से तेज?