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

PHP के माध्यम से MySQL बल्क इंसर्ट

यदि आप तैयार कथन का उपयोग करते हैं, तो आप अपने $JSON_data . पर लूप कर सकते हैं फ़ोरैच लूप के साथ सरणी और INSERT run चलाएँ डेटा के उस हिस्से के साथ।

तैयार किए गए कथनों का उपयोग करने से क्वेरी बनाने का ओवरहेड कम हो जाएगा, बस लूप के प्रत्येक पुनरावृत्ति पर डेटाबेस को नया डेटा भेजना होगा।

$query = mysqli_prepare("INSERT INTO `MyTable` (`col1`,`col2`,`col3`)
    VALUES(?,?,?)");

foreach($JSON_data as $key => $value) {
    $query->bind_param('sss',$value["prop1"],$value["prop2"],$value["prop3"];
    $query->execute();
}

ध्यान दें कि bind_param() का पहला तर्क यह बताता है कि आप कितने मानों के लिए बाध्य होंगे, साथ ही प्रत्येक मान के लिए प्रकार।
s स्ट्रिंग डेटा से मेल खाती है, i पूर्णांक डेटा से मेल खाती है, d डबल (फ्लोटिंग पॉइंट) से मेल खाती है, और b बाइनरी डेटा से मेल खाती है।

सावधानी का एक और शब्द, नहीं करें किसी भी स्ट्रिंग डेटा को s . के रूप में उद्धृत करें डेटाटाइप एक स्ट्रिंग की अपेक्षा करने के लिए MySQL को बताता है। यदि आप ? . उद्धृत करते हैं तैयार बयान में, यह आपको बताएगा कि पैरा की संख्या गलत है। यदि आप स्ट्रिंग्स को उद्धृत करते हैं, तो इसे mysql में उद्धृत किया जाएगा।

संपादित करें:

यदि आप एक ही प्रतिमान (एक क्वेरी के साथ कई पंक्तियों को सम्मिलित करना) का उपयोग करना चाहते हैं, तो इसे करने के तरीके हैं। एक तरीका एक वर्ग बनाना है जो bind_param . को एकत्रित करेगा जब आप क्वेरी निष्पादित करते हैं तो कॉल करें और एक bind_param करें। उसके लिए कोड यहां है। ।



  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 स्थापना

  2. फेसबुक user_id:big_int, int या string?

  3. स्तंभों को पंक्तियों में स्थानांतरित करें

  4. मारियाडीबी:क्या मैं 'एएस' का उपयोग किए बिना डुप्लिकेट कॉलम नामों को पुनः प्राप्त कर सकता हूं

  5. docker-entrypoint-initdb में MySQL स्क्रिप्ट निष्पादित नहीं की जाती हैं