Краткий ответ:
$mysqli = new mysqli('localhost', 'user', 'pass', 'db');
$mysqli->query("SET SESSION TRANSACTION ISOLATION LEVEL SERIALIZABLE");
Длинный ответ: Если вы не используете модификатор SESSION или GLOBAL , настройка уровня транзакции будет применяться только к самому следующему запросу.
tldr;
Согласно документации MySQL с таблицами InnoDB:
Без ключевого слова SESSION или GLOBAL:
Выписка применяется только к следующей выполненной транзакции
в течение сессии.
Последующие транзакции возвращаются к использованию значения сеанса именованного
характеристики. * * тысяча двадцать-один
Выписка не допускается в транзакциях
Обратите внимание, что установка флага GLOBAL
повлияет на все последующие запросы. Существующие сеансы не будут затронуты.