У вас возникли проблемы с правильным использованием mysqli autocommit. Ниже приведены запросы.Правильное использование autocommit php mysqli и отката
Таблица1 и Таблица3 являются ЬшоВВ в то время как Table2 является MyISAM
Значения к Table2 и Table3 вставлены надлежащим образом, но значения к Table1 не хранятся. Ошибок при запуске кода не возникает.
$dbconnect->autocommit(false);
$stmt = $dbconnect->prepare("INSERT INTO `table1`(`col1`,`col2`) VALUES (?,?)");
$stmt->bind_param('ss',$val1,$val2);
$stmt->execute();
$dbconnect->rollback();
$stmt = $dbconnect->prepare("INSERT INTO `table2`(`col1`,`col2`) VALUES (?,?)");
$stmt->bind_param('ss',$val3,$val4);
$stmt->execute();
$dbconnect->rollback();
$stmt = $dbconnect->prepare("INSERT INTO `table3`(`col1`,`col2`) VALUES (?,?)");
$stmt->bind_param('ss',$val5,$val6);
$stmt->execute();
$dbconnect->commit();
Когда и как вы используете autocommit (false) и rollback()?
теперь я получаю его. поэтому «commit» завершает и «откатывает» для отката транзакций. как насчет параметра autocommit 'true' и' false'? В руководстве написано: «Включить авто-фиксацию или нет», поэтому, установив false, я отключил его? –
Это правильно. Вероятно, лучшее решение - оставить его включенным и выключить, если вам нужно. Также имеет смысл использовать [транзакцию] (http://www.php.net/manual/en/mysqli.begin-transaction.php), поэтому вам не нужно задаваться вопросом о значении авто- фиксация. – Orangepill
Поскольку я прочитал его в документации PHP в качестве комментария, включите и выключите автозапуск, также совершает все, что еще не было выполнено. Так что я могу просто включить его снова вместо фиксации? '$ dbconnect-> autocommit (true)' в конце 'try' – Lithilion