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

पर्ल:एक MySQL कॉल के साथ एकाधिक पंक्तियों को अपडेट करें

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

MySQL DBD ड्राइवर कई कथनों का समर्थन करता है, हालांकि यह एक सुरक्षा सुविधा के रूप में डिफ़ॉल्ट रूप से बंद है। देखें mysql_multi_statements क्लास मेथड्स के तहत DBD::mysql प्रलेखन में अनुभाग।

लेकिन एक बेहतर समाधान, जो दोनों समस्याओं को एक साथ हल करता है और अधिक पोर्टेबल है, तैयार कथनों और प्लेसहोल्डर मानों का उपयोग करना है।

my $sth = $dbh->prepare("UPDATE LOW_PRIORITY TableName SET E1=?,F1=? WHERE X=?");

फिर, अपना डेटा किसी प्रकार के लूप में प्राप्त करें:

while( $whatever) { 
    my ( $EC, $MR, $EM ) = get_the_data();
    $sth->execute( $EC, $MR, $EM );
}

आपको केवल एक बार विवरण तैयार करने की आवश्यकता है, और DBD ड्राइवर द्वारा प्लेसहोल्डर मानों को बदल दिया जाता है (और ठीक से उद्धृत किए जाने की गारंटी दी जाती है)।

प्लेसहोल्डर्स के बारे में DBI डॉक्स में पढ़ें ।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL:CASE की सीमा (कब, फिर शर्तों की संख्या)

  2. शामिल होने में मौजूद नहीं रिकॉर्ड हटाएं

  3. लोड डेटा INFILE के साथ mysql डुप्लिकेट

  4. 'X' किलोमीटर (या मील) के भीतर शहर ढूँढना

  5. MySQL और RDBMS