mysqli_query поддерживает асинхронные запросы.Смотрите список изменений на mysqli_query
. mysqli_multi_query специально не упоминает асинхронность на странице руководства.Единственное, что делает mysqli_multi_query
, это говорит MySQL выполнить большой набор запросов.PHP должен ждать результатов.
Поскольку ваш код стоит, вы отправляете большой набор SQL-операторов в MySQL и не ожидаете результатов.Только когда ваш mysqli_multi_query
будет die
- это когда первый оператор потерпит неудачу.Таким образом, эта функция возвращает true сразу после первого оператора и переходит к следующей строке.Вот почему запросы выполняются после завершения PHP.MySQL все еще работает.PHP движется дальше.
Лучше, чтобы вы просматривали результаты каждого оператора, прежде чем переходить к своему коду.Следующее будет die
, если запрос не выполняется нигде в вашем пакете.
mysqli_multi_query($db_link, file_get_contents($path.'/'.$file)) or die ("$database 4" .mysqli_error($db_link));
do {
if($result = mysqli_store_result($db_link)){
mysqli_free_result($result);
}
} while(mysqli_next_result($db_link));
if(mysqli_error($db_link)) {
die(mysqli_error($db_link));
}