$mysqli = new mysqli("localhost", "root", "", "my-base");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$mysqli->autocommit(FALSE);
$mysqli->query("INSERT INTO `language` (`f1`,`f2`,`f3`,`f4`) VALUES ('111', '765', 's', '".date("H:i:s",time())."')");
$mysqli->query("INSERT INTO `language` (`f1`,`f2`,`f3`,`f5`) VALUES ('222', '908', 's', '".date("H:i:s",time())."')");
$mysqli->commit();
$mysqli->close();
Собственно хочу сделать 2 INSERT, причем второй с неправильным полем f5
за место f4
. т.е. как мне думается 1 запрос точно не должен отработать, и т.к. это транзакция отменяются все запросы в ней. Выполняю. Первый INSERT проходит на ура, второй ест-но нет.
Прошу подсказать, или объяснить как сделать так, что бы при ошибке запроса ( одного из .. ) запросы не выполнялись вообще
p.s. есть конечно вариант в классе который обрабатывает собирать ответы, проходиться по ним в цикле, и если по одному запросу нет положительного ответа делать rollback, но изначально думал, что commit или работают все запросы или не работает ни один
Всё так задумано в mysql. Ошибка запроса не рассматривается как повод принудительно отменять транзакцию как в других СУБД. Вам необходимо проверять результат каждого запроса самостоятельно.
Но вот ссылку на мануал дать затрудняюсь, не нашёл там упоминания этого.
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Функцию завернул в $js = JS, и не знаю как вызвать функцию send()
Есть форма, в который какое-то количество селектовТак же, прикручен плагин dropzone