У меня есть сценарий PHP, который готовит 3 различных представления SQL. SQL действителен для всех них. Если я поменяю порядок приведенных ниже утверждений IF, все они будут работать. Если $ratesSQL
сначала то и 1) и 2) работают. Если любой из двух других является первым, то работает только 1).
SQL:
$sqlRates = "LOAD XML LOCAL INFILE '/xx/yy/zz/example.xml'
REPLACE
INTO TABLE rates
ROWS IDENTIFIED BY '<row>'";
И то и другое $vixSQL
а также $aaaSQL
много REPLACE INTO
заявления. Пример:
REPLACE INTO aaa (date,value) VALUES ('2016-01-29','4.05'); REPLACE INTO aaa (date,value) VALUES ('2016-01-28','4.07');
Заявления IF:
1) Успешная подача с приведенным ниже. $ rateSQL — это примерно 300 строк данных.
if (mysqli_multi_query($dbc, $ratesSQL)) {
echo "<h3>Rates Load Successful</h3><br>";
} else {
echo "<h3>Rates Load Error</h3><br>";
}
2) Успешная подача. ~ 8000 строк данных.
if (mysqli_multi_query($dbc, $vixSQL)) {
echo "<h3>VIX Load Successful</h3><br>";
} else {
echo "<h3>VIX Load Error</h3><br>";
}
3) Неудачная отправка, ~ 8000 строк данных
if (mysqli_multi_query($dbc, $aaaSQL)) {
echo "<h3>AAA Load Successful</h3><br>";
} else {
echo "<h3>AAA Load Error</h3><br>";
}
$ratesSQL
отправка составляет всего около 300 строк данных, а две другие — около 8000. Это количество данных вызывает у меня проблемы? Любые предложения, чтобы обойти это?
КОМБИНИРОВАНИЕ ЗАПРОСОВ НА ОТВЕТ НИЖЕ ПОЗВОЛЯЕТ МНЕ ПОЛУЧИТЬ ВСЕ ЭТО. Все еще озадачиваться, почему отдельные запросы не удалось. ЛЮБАЯ ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ БУДЕТ ЦЕНА
Объедините все ваши запросы и используйте mysqli_multi_query
один раз
Примечание: несколько запросов должны быть объединены точкой с запятой
$finalSqlQuery = $sqlRates .';'.$vixSQL.$aaaSQL;
if(mysqli_multi_query($dbc,$finalSqlQuery)){
//Then you can use mysqli_store_result()
do{
if($result = mysqli_store_result($dbc)){
//Note that mysqli_store_result will return a buffer object and false on query error.
print_r($result);/*display and check what is the results of the query if are you sure that the query doesn't have an error just to check the result of the query*/
mysqli_free_result($result);
}
/* print divider */
if (mysqli_more_results($dbc)) {
printf("-----------------\n");
}}while(mysqli_next_result($dbc));
$result = mysqli_store_result($dbc)
}
Других решений пока нет …