Retrieving Multiple Result sets with stored procedure in php/mysqli -


मेरे पास एक संग्रहीत प्रक्रिया है जिसमें एकाधिक परिणाम सेट हैं I

  प्रक्रिया के गुणकों को बनाने (param1 INT, param2 INT) मैं उन परिणामों को प्राप्त करने के लिए mysqli में निर्धारित दूसरे परिणाम के लिए कैसे आगे बढ़ूं? ) शुरू से चुनें तालिका 1 WHERE आईडी = param1; SELECT * table2 WHERE id = param2; एंड $ $  

PHP कुछ ऐसा है:

  $ stmt = mysqli_prepare ($ db, 'कॉल गुणक (?,?)'); Mysqli_stmt_bind_param ($ stmt, 'ii', $ परम 1, $ परम 2); Mysqli_stmt_execute ($ stmt); Mysqli_stmt_bind_result ($ stmt, $ id);  

तो यह वह हिस्सा है जो मुझे काम करने के लिए नहीं मिल सकता है। मैंने अगले परिणाम सेट पर जाने के लिए mysqli_next_result का उपयोग करने की कोशिश की है, लेकिन इसे काम करने के लिए नहीं मिल सकता है हम इसे mysqli_store_result और mysqli_stetch_assoc / array / row के साथ काम करने के लिए प्राप्त कर चुके हैं, लेकिन कुछ कारणों से सभी इन्ट्स रिक्त स्ट्रिंग के रूप में लौटाए जाते हैं।

क्या कोई भी इस पर पहुंचता है और इसका कोई समाधान है?

मुझे लगता है कि आप यहाँ कुछ याद कर रहे हैं (निम्नलिखित का परीक्षण नहीं किया गया है):

 < कोड> $ stmt = mysqli_prepare ($ db, 'कॉल गुणक (?,?)'); Mysqli_stmt_bind_param ($ stmt, 'ii', $ परम 1, $ परम 2); mysqli_stmt_execute ($ stmt); // पहले परिणाम सेट करें $ result1 = mysqli_use_result ($ db); // आपको यहां निर्धारित परिणाम पढ़ना होगा ($ पंक्ति = $ परिणाम 1- & gt; fetch_assoc ()) {printf ("% d \ n", $ पंक्ति ['आईडी']); } // अब हम अपने पहले परिणाम सेट के अंत में हैं। mysqli_free_result ($ result1); // अगले परिणाम सेट mysqli_next_result सेट करें ($ db); $ Result2 = mysqli_use_result ($ db); // आपको परिणाम सेट को यहां पढ़ना होगा ($ पंक्ति = $ परिणाम 2- & gt; fetch_assoc ()) {printf ("% d \ n", $ पंक्ति ['आईडी']); } // अब हम अपने दूसरे परिणाम सेट के अंत में हैं। mysqli_free_result ($ result2); // बंद कथन mysqli_stmt_close ($ stmt);  

अपना कोड प्रयोग करना ऐसा दिखेगा:

  $ stmt = $ db- & gt; तैयार करें ('कॉल गुणक (: param1,: param2)') ; $ Stmt- & gt; निष्पादन (सरणी (': param1' = & gt; $ परम 1, ': param2' = & gt; $ परम 2)); // पढ़ने के पहले परिणाम सेट ($ पंक्ति = $ stmt- & gt; फ़ेच ()) {printf ("% d \ n", $ पंक्ति ['आईडी']); } $ Stmt- & gt; अगली रोशेट (); // पढ़ने के दूसरे परिणाम सेट करते हुए ($ पंक्ति = $ stmt- & gt; फ़ेच करें ()) {printf ("% d \ n", $ पंक्ति ['आईडी']); }  

लेकिन मैंने सुना है कि इसे कई परिणाम सेटों को प्राप्त करना असंभव बनाने के साथ कार्यान्वित नहीं किया गया है:

  • < / Li>
  • अतः, आपके PHP संस्करण के आधार पर, आपको अपने -सिशन के साथ रहना होगा। वैसे: क्या आप जानबूझकर प्रक्रियात्मक शैली का उपयोग करते हैं? mysqli के साथ ऑब्जेक्ट ओरिएंटेड स्टाइल का उपयोग करके आपका कोड थोड़ा और अधिक आकर्षक (मेरी निजी राय) को देखेगा।


    Comments

    Popular posts from this blog

    java - org.apache.http.ProtocolException: Target host is not specified -

    java - Gradle dependencies: compile project by relative path -

    ruby on rails - Object doesn't support #inspect when used with .include -