У меня есть следующий код:PHP Mysqli нескольких запросов + Transaction
...
$mysqli->autocommit(FALSE);
if(in_array('files',$item)){
$sql_el_truncate = "
TRUNCATE TABLE `article_files`;
TRUNCATE TABLE `files`;
TRUNCATE TABLE `gallery_files`;
TRUNCATE TABLE `image_captions`;
";
$mysqli->multi_query($sql_el_truncate);
do{
$mysqli->use_result();
}while ($mysqli->next_result());
if ($mysqli->errno) {
$valid_entry = 0;
}
echo $valid_entry;
}
if($valid_entry){
$mysqli->commit();
}else{
$mysqli->rollback();
}
...
В случае ошибки я получаю правильное $valid_entry
значение 0, но откат не работает. Даже если я буду называть некоторые команды TRUNCATE ложно, он все равно будет выполнять остальные команды, дайте мне ошибку, но она не откат.
Кто-нибудь знает, как правильно использовать транзакцию на mysqli
?
Спасибо за ваш ответ! Теперь, что вы предлагаете мне? Оставьте его таким, какой он есть, и все равно получите некоторые из усечений, которые запускаются в любом случае, или есть альтернативный метод? –
Обновлен мой ответ. –