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

रनटाइम पर गतिशील रूप से तालिका नाम चुनने का सबसे अच्छा तरीका क्या है?

आप किसी पहचानकर्ता को पैरामीटर नहीं बना सकते (तालिका नाम या फ़ील्ड नाम) MySQL में, हालांकि, आप बैकटिक्स का उपयोग करके उनसे बच सकते हैं।

निम्न क्वेरी सुरक्षित रूप से चलेगी लेकिन एक त्रुटि उत्पन्न करेगी क्योंकि तालिका मौजूद नहीं है (जब तक कि कुछ अजीब संयोग से आपके पास वास्तव में इस तरह की एक तालिका नहीं है):

SELECT * FROM `users; DROP TABLE users;`;

मूल रूप से, आप गतिशील नाम या फ़ील्ड का उपयोग तब तक कर सकते हैं जब तक वे बैकटिक्स में संलग्न हों। SQL इंजेक्शन को इस तरह से रोकने के लिए, आपको बस इतना करना है कि पहले किसी भी बैकटिक्स को हटा दें:

tableName = tableName.Replace("`", "");
string commandText = "SELECT COUNT(*) FROM `" + tableName + "`";


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL 5.7.12 आयात CHARACTER SET 'बाइनरी' वाली स्ट्रिंग से JSON मान नहीं बना सकता

  2. मैसकल पासवर्ड की समय सीमा समाप्त हो गई। कनेक्ट नहीं हो सकता

  3. केकेपीएचपी:खोज विधि के साथ प्रश्न बनाते समय मैं एक हैविंग ऑपरेशन का उपयोग कैसे कर सकता हूं?

  4. .NET . के साथ mySQL में बॉट स्थिति डेटा सहेजा जा रहा है

  5. MySQL में Coalesce का उपयोग कैसे करें