एक INSERT
को असेंबल करना एक से अधिक पंक्तियों वाला कथन MySQL में एक INSERT
. की तुलना में बहुत तेज़ है प्रति पंक्ति कथन।
उस ने कहा, ऐसा लगता है कि आप PHP में स्ट्रिंग-हैंडलिंग समस्याओं में भाग ले रहे हैं, जो वास्तव में एक एल्गोरिदम समस्या है, भाषा नहीं। मूल रूप से, बड़े तारों के साथ काम करते समय, आप अनावश्यक प्रतिलिपि को कम करना चाहते हैं। मुख्य रूप से, इसका मतलब है कि आप संघटन से बचना चाहते हैं। एक बड़ी स्ट्रिंग बनाने का सबसे तेज़ और सबसे अधिक मेमोरी कुशल तरीका, जैसे कि एक बार में सैकड़ों पंक्तियों को सम्मिलित करने के लिए, implode()
का लाभ उठाना है। फ़ंक्शन और सरणी असाइनमेंट।
$sql = array();
foreach( $data as $row ) {
$sql[] = '("'.mysql_real_escape_string($row['text']).'", '.$row['category_id'].')';
}
mysql_query('INSERT INTO table (text, category) VALUES '.implode(',', $sql));
इस दृष्टिकोण का लाभ यह है कि आप प्रत्येक संयोजन के साथ अब तक इकट्ठे किए गए SQL कथन की प्रतिलिपि नहीं बनाते और न ही पुन:प्रतिलिपि बनाते हैं; इसके बजाय, PHP यह एक बार करता है implode()
. में बयान। यह एक बड़ा है जीत।
यदि आपके पास एक साथ रखने के लिए बहुत सारे कॉलम हैं, और एक या अधिक बहुत लंबे हैं, तो आप एक ही काम करने के लिए एक आंतरिक लूप भी बना सकते हैं और implode()
का उपयोग कर सकते हैं। मान क्लॉज को बाहरी सरणी में असाइन करने के लिए।