यह PHP की ही एक सीमा लगती है, देखें वर्डप्रेस मंचों पर यह पोस्ट ।
मुझे एक ही समस्या का सामना करना पड़ा और एक कस्टम फ़ंक्शन बनाना समाप्त कर दिया जो काम करता है, अगर यह किसी के लिए उपयोगी है तो मैं इसे यहां पेस्ट करता हूं। यह कार्य अपेक्षाकृत सरल है क्योंकि यह कुछ धारणाएं करता है, लेकिन विभिन्न आवश्यकताओं के अनुरूप इसे संशोधित करना आसान होना चाहिए। विशेष रूप से यह मानता है कि:
- सभी स्टेटमेंट इंसर्ट और अपडेट हैं, वापस करने के लिए कोई डेटा नहीं है।
- विवरणों को पंक्ति अनुक्रम के अंत के साथ अलग किया जाता है।
- विवरण लेन-देन में संलग्न हैं।
यह है फंक्शन:
function execute_multiline_sql($sql) {
global $wpdb;
$sqlParts = array_filter(explode("\r\n", $sql));
foreach($sqlParts as $part) {
$wpdb->query($part);
if($wpdb->last_error != '') {
$error = new WP_Error("dberror", __("Database query error"), $wpdb->last_error);
$wpdb->query("rollback;");
return $error;
}
}
return true;
}
उपयोग उदाहरण:
$sql = "start transaction;\r\n" .
"insert into ...;\r\n" .
"update ...;\r\n" .
"commit;\r\n"
;
$result = execute_multiline_sql($sql);
if(is_wp_error($result)) {
//Fail!
}