मैंने कुछ समय पहले PHP में एक बहु क्वेरी में त्रुटियों को पकड़ने के बारे में कुछ पूछा है, लेकिन किसी ने भी उत्तर नहीं दिया। अब मैंने थोड़ा और गुस्सा किया है और समस्या का थोड़ा और समझ लिया है।त्रुटियों को होने पर PHP बहु क्वेरी जारी रखना
// Some starting variables
$test = new mysqli("localhost","root","","testdatabase");
$Query = array();
$Query[] = "SELECT 'wos' FROM items WHERE itemID = 3";
$Query[] = "SELECT 'wos' FROM items WHERE itemID";
$Query[] = "SELECT 'wos' FROM items WHERE itemID = 5";
$Query = implode(";",$Query);
$Errors = array();
// Execute multi query
if ($test->multi_query($Query)) {
do {
// fetch results
$Result = $test->store_result();
print_r($Result);
if($test->errno === 0) {
echo $Result->num_rows . "<br>";
}
else {
$Errors[] = $test->error;
}
$Result->close();
if (!$test->more_results()) {
break;
}
if (!$test->next_result()) {
$Errors[] = $test->error;
break;
}
} while (true);
}
आप मैं एक्स बाद प्रश्नों की एक संख्या है और उन सब को करने के लिए चाहते हैं देख सकते हैं:
मैं इस कोड मिला है। तो यदि क्वेरी 2 विफल रहता है तो मैं निम्नलिखित प्रश्नों को चलाने के लिए बहु-क्वेरी जारी रखना चाहता हूं। मैं यह कैसे कर सकता हूँ?
इसके अलावा, अगर कोई त्रुटि होती है तो मैं इस त्रुटि को $Errors
में सहेजना चाहता हूं। हालांकि वर्तमान में यह इरादे से काफी काम नहीं कर रहा है क्योंकि मैं केवल त्रुटि संदेश को सहेज सकता हूं लेकिन संबंधित क्वेरी नहीं। असफल क्वेरी के बिना केवल त्रुटि संदेश वास्तव में सहायक नहीं है। तो मैं कुछ ऐसा करना चाहता हूं: "Query 3 failed ('SELECT ...'): 'ERROR MESSAGE'"
।
यह कैसे संभव है? मैं $test->error
के साथ लूप में वर्तमान त्रुटि प्राप्त करने में सक्षम हूं, लेकिन मेरे पास $test->currentsubsequentquery
जैसी कोई चीज़ नहीं है। मैं उसे कैसे कर सकता हूँ?
बहुत बहुत धन्यवाद।
मुझे कहीं भी नहीं देखा जाता है जहां $ परीक्षण परिभाषित किया जाता है या किसी भी तरीके से यह कॉल किया जा रहा है। अगर हम नहीं जानते तो मदद करने के लिए असंभव आपका कोड क्या कर रहा है। – Kyle
$ test = new mysqli ("localhost", "root", "", "testdatabase"); – Shiuyin
यदि SQL त्रुटियां संभव हैं, तो अपेक्षित परिणाम तो आप कुछ गलत कर रहे हैं। और यदि आप एक एसक्यूएल क्लाइंट (या टर्मिनल) की तरह कुछ कर रहा है, आपको वास्तव में कई प्रश्नों को एक बार में निष्पादित करने की आवश्यकता क्यों है? –