У меня скрипт импорта, много данных, вычитал, что мне нужно транзакциями воспользоваться, иначе все крайне долго и нагруженно выполняется.
Собственно, когда пытаюсь использовать, действую по примерам
$mysqli->real_query("SELECT * FROM sd_hotellook_cityids WHERE countryid != 0 AND updated = 0 AND checked = 0 ORDER by id LIMIT 3");
$query = $mysqli->store_result();
$mysqli->autocommit(FALSE);
while ($city = $query->fetch_assoc()) {
// здесь собираются все запросы в sql переменную для каждого города
$sql .= ("INSERT sd_hotellook_hotels_shortFacilities (id, name,cityid) VALUES $shortFacilities; ");
//и потом выполняем
if (!empty($sql)) {
if ($mysqli->multi_query($sql)) {
do {
// fetch results
if (!$mysqli->more_results()) {
break;
}
if (!$mysqli->next_result()) {
echo 'Insert Error: ' . $mysqli->error . '<br />';
$error = 1;
break;
}
} while (true);
}
}
if( $error != 1){
if (!$mysqli->commit())
{
echo 'Insert Error: ' . $mysqli->error . '<br />';
}
}else{
$mysqli->rollback();
exit();
}
}
Но при этом упорно получаю ошибку "Commands out of sync; you can't run this command now". При этом если без транзакций, у меня все работало.
Код урезал при публикации, надеюсь, не напутал.