PHP Mysqli multi_query() फ़ंक्शन के साथ कई क्वेरी की अनुमति देता है ।
सामान्य शब्दों में बातचीत में शामिल होने के लिए, और अंतहीन सिंक से बाहर के दुःख से बचने के लिए निम्नलिखित है त्रुटियाँ जब बहु प्रश्नों के ब्लॉक एक दूसरे के ऊपर चलाए जाते हैं। या एक बहु के बाद एक गैर-बहु।
multi_query()
. के निष्पादन के बाद समस्या शुरू होती है यदि कोई परिणाम सेट को साफ़ किए बिना अगली क्वेरी पर जाता है। त्रुटि वह होगी जिसे नीचे Note1 के रूप में दर्शाया गया है। लेकिन इस उत्तर में इसे टाला गया है।
आपकी विशेष समस्या का \r\n
. से कोई लेना-देना नहीं था या \n\r
. इस प्रयास के हिस्से के रूप में उनका परीक्षण किया गया, लेकिन उन्हें छोड़ दिया गया ताकि आने वाले अगले व्यक्ति को उनकी समस्या के साथ भ्रमित न किया जा सके, अलग।
<?php
//mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
mysqli_report(MYSQLI_REPORT_ALL);
error_reporting(E_ALL); // report all PHP errors
ini_set("display_errors", 1);
echo "start<br/>";
try {
$mysqli= new mysqli('hostname', 'dbuser', 'pwd', 'dbname');
if ($mysqli->connect_error) {
die('Connect Error (' . $mysqli->connect_errno . ') '
. $mysqli->connect_error);
}
echo "I am connected and feel happy.<br/>";
$query = "INSERT INTO `table1`(`thing`) values ('aaa')";
$mysqli->query($query);
// works fine
// Note the concat below
$query = "INSERT INTO `table1`(`thing`) values ('bbb1'); ";
$query .=$query; // double it up with concat (in other words two insert)
// we have a multi query so call it the right way:
$mysqli->multi_query($query);
// we need to clear the protocol to avoid Out of Sync errors
// http://stackoverflow.com/a/21754463
do {
$mysqli->use_result();
}while( $mysqli->more_results() && $mysqli->next_result() );
// if you remark out the above 3 lines,
// expect error message depicted in **** Note1 ****
// purpose of this next block is to show result sets are cleared
// from prior multi, and we can do another insert
// thus avoiding error 500 out of sync errors
$query = "INSERT INTO `table1`(`thing`) values ('ccc')";
$mysqli->query($query); // a single insert statement
// Finally, this shows that running a multi without a multi_query fcn call will bomb
$query = "INSERT INTO `table1`(`thing`) values ('explosion'); \r\n";
$query .=$query; // double it up with concat
$mysqli->query($query); // make a multi query explode by not calling multi_query (but rather query)
// The above line generated an error, error message below (**** Note2 ****)
$mysqli->close();
} catch (mysqli_sql_exception $e) {
throw $e;
}
?>
डेटाबेस परिणाम:
select * from table1;
+----+-------+
| id | thing |
+----+-------+
| 1 | aaa |
| 2 | bbb1 |
| 3 | bbb1 |
| 4 | ccc |
+----+-------+
दिखाए गए स्रोत कोड में निम्न त्रुटि संदेशों का उल्लेख किया गया है। पहले वाले को पूरी तरह से टाला जाता है। दूसरा नहीं है, और यह दिखाने के लिए कि फ़ंक्शन multi_query()
. है , query()
. के विपरीत , आवश्यक है।
******* Note1 *******
******* Note2 *******