के साथ बैच एकाधिक पंक्तियों को सम्मिलित करें मैं PHP पीडीओ का उपयोग करके एकाधिक प्रविष्टियां करने के लिए देख रहा हूं।PHP पीडीओ प्लेसहोल्डर
निकटतम जवाब मैं पाया है यह एक
how-to-insert-an-array-into-a-single-mysql-prepared-statement
है हालांकि उदाहरण का उपयोग करता है दिया गया thats ?? असली प्लेसहोल्डर के बजाय।
मैं जगह धारकों के लिए पीएचपी डॉक साइट पर उदाहरण पर ध्यान दिया है
php.net pdo.prepared-statements
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':value', $value);
अब कहते हैं कि मैं इसके बाद के संस्करण प्राप्त करने के लिए चाहता था, लेकिन एक सरणी
$valuesToInsert = array(
0 => array('name' => 'Robert', 'value' => 'some value'),
1 => array('name' -> 'Louise', 'value' => 'another value')
);
साथ देता है
मैं इसके बारे में पीडीओ और प्रति लेनदेन के एकाधिक आवेषण के साथ कैसे जाउंगा?
मुझे लगता है कि यह एक लूप के साथ शुरू होगा?
$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)");
foreach($valuesToInsert as $insertRow){
// now loop through each inner array to match binded values
foreach($insertRow as $column => value){
$stmt->bindParam(":{$column}", value);
}
}
$stmt->execute();
हालांकि ऊपर काम नहीं करता है, लेकिन उम्मीद है कि क्या im प्राप्त करने के लिए
आप पाश अंदर निष्पादित करने के लिए की जरूरत है। अन्यथा आप केवल बाध्य पैरामीटर को ओवरराइट कर रहे हैं और केवल अंतिम मूल्य को बाध्यकारी बनाते हैं। –
हालांकि अगर मैं निष्पादित करता हूं तो वह एक समय में डीबी लेनदेन एक पंक्ति करेगा? मैं इसे –
बैच में करने की कोशिश कर रहा हूं, लेकिन यदि आप mysql विस्तारित 'सम्मिलित करें ... मान (...), (...), (...)' सिंटैक्स डालें, यह है आप इसके बारे में कैसे नहीं जाते हैं। आपको एक क्वेरी स्टेटमेंट को पूर्व-निर्माण करना होगा जिसमें आपके द्वारा डाले गए मानों के प्रत्येक सेट के लिए प्लेसहोल्डर है, इसे तैयार करें, पैरामीटर बाध्य करें, फिर निष्पादित करें। आप एक ही तैयार किए गए सम्मिलन को कई बार चलाने के रूप में उतना ही काम करना समाप्त कर देंगे। –