दिलचस्प पोस्ट
सुरक्षाएक्सेप्शन: अनुमति अस्वीकृत (इंटरनेट अनुमति अनुपलब्ध है?) java.rmi.ConnectException: कनेक्शन होस्ट करने से इनकार कर दिया गया: 127.0.1.1; शरीर के चारों ओर मार्जिन स्थान कैसे हटाएं या डिफ़ॉल्ट सीएसएस शैलियों को साफ़ करें एंड्रॉइड में एक अनुरोध में एक छवि और ऑडियो अपलोड करें एंड्रॉइड गतिविधि को इन्स्तांत करने में असमर्थ: पथ पर वर्ग नहीं मिला Android में सेल सेवा सिग्नल की ताकत कैसे प्राप्त करें? आप सभी घटनाओं को jQuery में एक तत्व द्वारा कैसे निकाल सकते हैं? प्रत्येक समूह के भीतर एक अल्पविराम से अलग स्ट्रिंग को कॉलम संकलित / एकत्रित करें / समस्त करें PHP घातक त्रुटि: अपरिभाषित फ़ंक्शन json_decode () को कॉल करें स्कला में विधि मापदंडों की मान्यता, समझ और मोनाद के लिए टॉमकैट में एक सर्विसलेट से धागे को बनाने के लिए सुझाई गई विधि क्या है एक्सएमएल पैकेज का उपयोग करते हुए आर डेटा फ्रेम में स्क्रैपिंग HTML टेबल टाइप किए गए स्मृति दृश्य के लिए मेमोरी आवंटित करने का अनुशंसित तरीका क्या है? पूरी तरह से योग्य डीबी पथ नाम के साथ SQLiteOpenHelper समस्या C # .NET का उपयोग कर फ़ोल्डर में "प्रत्येक व्यक्ति" विशेषाधिकार जोड़ें

सख्त मानकों: mysqli_next_result () mysqli_multi_query के साथ त्रुटि

मैंने multi_query का उपयोग करने की कोशिश की है लेकिन मैं एक सख्त मानक संदेश पॉप अप कर रहा हूं।

$querystring = "INSERT INTO responses VALUES('1', '2', '3', '4'); INSERT INTO responses VALUES('1', '2', '3', '4')"; if (mysqli_multi_query($db, $querystring)) { do { if ($result = mysqli_store_result($db)) { // } } while (mysqli_next_result($db)); } echo "end"; 

मुझे मिल गया त्रुटि संदेश है:

सख्त मानकों : mysqli_next_result (): कोई अगला परिणाम सेट नहीं है। कृपया इस फ़ंक्शन / विधि को कॉल करने की जांच करने के लिए, mysqli_more_results () / mysqli :: more_results () को कॉल करें

मैंने जोड़ने और हटाने की कोशिश की -; लेकिन कोई भाग्य नहीं था।

वेब के समाधान से एकत्रित समाधान "सख्त मानकों: mysqli_next_result () mysqli_multi_query के साथ त्रुटि"

जबकि पिपोडिनेंस ने $ क्विकस्ट्रिंग के भीतर त्रुटि को सही किया और समस्या को कम किया, वास्तविक समाधान सख्त मानकों के त्रुटि के बारे में प्रदान नहीं किया गया था।

मैं महोदय की सलाह से असहमत हूं, डू से बदलते समय ऐसा करना जरूरी नहीं है।

आपके द्वारा प्राप्त सख्त मानक संदेश काफी जानकारीपूर्ण है। पालन ​​करने के लिए, इसका उपयोग करें:

 do{} while(mysqli_more_results($db) && mysqli_next_result($db)); 

उसके बाद, आपको सशर्त बाहर निकलने या लूप के अंदर तोड़ने की कोई ज़रूरत नहीं है, क्योंकि तब की स्थिति एक त्रुटि की पहली घटना पर लूप को तोड़ देती है। * नोट करें, अगर डॉट-ईन के पहले अगर स्टेटमेंट लूप में प्रवेश से इनकार करेगी तो पहली क्वेरी में कोई त्रुटि है

आपके उदाहरण में, आप केवल INSERT प्रश्नों को चला रहे हैं, इसलिए आपको प्रक्रिया के लिए कोई भी परिणाम सेट नहीं मिलेगा। यदि आप कितनी पंक्तियों को जोड़ते हैं, यह गणना करना चाहते हैं, तो mysqli_affected_rows () का उपयोग करें

आपके प्रश्न के लिए एक पूर्ण समाधान के रूप में:

 if(mysqli_multi_query($db,$querystring)){ do{ $cumulative_rows+=mysqli_affected_rows($db); } while(mysqli_more_results($db) && mysqli_next_result($db)); } if($error_mess=mysqli_error($db)){echo "Error: $error_mess";} echo "Cumulative Affected Rows: $cumulative_rows"; 

आउटपुट:

  // if no errors Cumulative Affected Rows: 2 // if error on second query Error: [something] Cumulative Affected Rows: 1 // if error on first query Error: [something] Cumulative Affected Rows: 0 

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

चूंकि लोग इस पोस्ट में मस्तिष्क के लिए नए हैं, मैं एक सामान्य लेकिन मजबूत स्निपेट की पेशकश करूँगा / बिना किसी नतीजे से निपटने के लिए क्वेरी को संभालने के लिए multi_query () का उपयोग करता हूं और यह प्रदर्शित करने के लिए कि किसी क्वेरी में सरणी में क्या संभाला जा रहा है …

क्लासिक "यदि () {DO}} WHILE}" सिंटैक्स :

 if(mysqli_multi_query($mysqli,implode(';',$queries))){ do{ echo "<br><br>",key($queries),": ",current($queries); // display key:value @ pointer if($result=mysqli_store_result($mysqli)){ // if a result set while($rows=mysqli_fetch_assoc($result)){ echo "<br>Col = {$rows["Col"]}"; } mysqli_free_result($result); } echo "<br>Rows = ",mysqli_affected_rows($mysqli); // acts like num_rows on SELECTs } while(next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli)); } if($mysqli_error=mysqli_error($mysqli)){ echo "<br><br>",key($queries),": ",current($queries),"Syntax Error:<br>$mysqli_error"; // display array pointer key:value } //if you want to use the snippet again... $mysqli_error=null; // clear variables reset($queries); // reset pointer 

पुनर्निर्मित पहिया "WHILE {}" सिंटैक्स (… जो उन लोगों के लिए जो पोस्ट टेस्ट लूप पसंद नहीं करते हैं):

 while((isset($multi_query) && (next($queries) && mysqli_more_results($mysqli) && mysqli_next_result($mysqli))) || (!isset($multi_query) && $multi_query=mysqli_multi_query($mysqli,implode(';',$queries)))){ echo "<br><br>",key($queries),": ",current($queries); // display array pointer key:value if($result=mysqli_store_result($mysqli)){ while($rows=mysqli_fetch_assoc($result)){ echo "<br>Col = {$rows["Col"]}"; } mysqli_free_result($result); } echo "<br>Rows = ",mysqli_affected_rows($mysqli); // acts like num_rows on SELECTs } if($mysqli_error=mysqli_error($mysqli)){ echo "<br><br>",key($queries),": ",current($queries),"Syntax Error:<br>$mysqli_error"; // display array pointer key:value } //if you want to use the snippet again... $multi_query=$mysqli_error=null; // clear variables reset($queries); // reset pointer 

इसलिए, या तो स्निपेट ने निम्नलिखित प्रश्नों को एक ही आउटपुट दिया है:

क्वेरी सरणी:

 $queries[]="SELECT * FROM `TEST`"; $queries[]="INSERT INTO `TEST` (Col) VALUES ('string1'),('string2')"; $queries[]="SELECT * FROM `TEST`"; $queries[]="DELETE FROM `TEST` WHERE Col LIKE 'string%'"; 

आउटपुट:

 0: SELECT * FROM `TEST` Rows = 0 1: INSERT INTO `TEST` (Col) VALUES ('string1'),('string2') Rows = 2 2: SELECT * FROM `TEST` Col = string1 Col = string2 Rows = 2 3: DELETE FROM `TEST` WHERE Col LIKE 'string%' Rows = 2 

अपनी आवश्यकताओं के अनुसार मेरे स्निपेट को संशोधित करें यदि आप एक बग को खोजने के लिए एक टिप्पणी छोड़ दो

कारण आपको यह चेतावनी मिलती है, यह सिर्फ इसलिए है क्योंकि आप do उपयोग dowhile कमांड ब्लॉक चलाने के बाद स्थिति का मूल्यांकन करता है। इसलिए जब कोई और नतीजे न हों, तो लूप की सामग्री एक अतिरिक्त समय भाग जाती है, जिससे चेतावनी उत्पन्न होती है।

while ($mysql->next_result()) का उपयोग while ($mysql->next_result()) … लूप को यह ठीक करना चाहिए। (सामान्य नोट पर: आपके जैसे पोस्ट टेस्ट लूप का उपयोग करना डेटाबेस प्रोग्रामिंग में काफी असामान्य था)

यदि कोड कविता है, तो मैं शेक्सपियर बनने की कोशिश कर रहा हूं!

(ओपी की ओर से जवाब पोस्ट किया)

हल किया:

 $querystring = "INSERT INTO responses VALUES('1', '2', '3', '4'); INSERT INTO responses VALUES('1', '2', '3', '4')"; if (mysqli_multi_query($db, $querystring)) { do { if (!mysqli_more_results($db)) { exit(); } } while (mysqli_next_result($db)); } echo "end";