दिलचस्प पोस्ट
कैसे कर्ल के साथ PHP के लिए JSON पोस्ट करने के लिए किसी विशेष फ़ाइल को एक विशिष्ट पुनरीक्षण के लिए रीसेट करना या वापस करना Git का उपयोग करना है? तत्काल = "सच्चा" को समझने की कोशिश कर रहा है जब यह नहीं होना चाहिए NSArray को उद्देश्य-सी में एक नए NSArray में फ़िल्टर करना स्पार्क java.lang.OutOfMemoryError: जावा हीप स्पेस Android में पिक्सेल रंग कैसे प्राप्त करें? सीतनिद्रा में होना: एक ही पहचानकर्ता मान के साथ अलग ऑब्जेक्ट पहले से ही सत्र से जुड़ा था सी # परिवर्तनशील scoping: इस क्षेत्र में 'एक्स' घोषित नहीं किया जा सकता क्योंकि यह 'एक्स' के लिए एक अलग अर्थ देगी किसी भी DOM तत्व के लिए संलग्न ईवेंट हैंडलर का निरीक्षण करें क्या शून्य, अपरिभाषित, या जावास्क्रिप्ट में खाली चर के लिए जाँच करने के लिए एक मानक कार्य है? PHP में यूआरएल को पोस्ट डेटा त्रुटि: अप्रत्याशित प्रतीक / इनपुट / स्ट्रिंग स्थिर / संख्यात्मक निरंतर / मेरे कोड में विशेष कैसे कंसोल अनुप्रयोग में प्रमुख प्रेस घटना को संभालने के लिए मैं स्विंगवॉर्कर के साथ एक बफर किए गए परिधीय उपकरण कैसे अनुकरण करता हूं? लकड़हारा (log4j) के लिए कोई अपेंडर्स नहीं मिला?

सख्त मानकों: 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";