Этот код транзакции работает правильно?

Я использую этот код для вставки данных в 2 таблицы,

try {
    array(PDO::ATTR_PERSISTENT => true);  
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->beginTransaction();
    // 1st insert
    $db->exec("insert into users (id, username, password,permission) values (18, 'raman', 2002,3)");
    //2nd insert 
    $db->exec("insert into table_11 (id,user_id1,amount) values (14, '130', '11300')"); 

    $db->commit();
} catch (Exception $e) {
    $db->rollBack();
    echo "Failed  : " . $e->getMessage();
}

Этот код работает нормально, однако, когда я тестирую транзакцию, делая вторую ошибку вставки, поскольку я изменил имя таблицы на неправильное имя таблицы, я обнаружил, что первая вставка все еще работает и может добавлять новые данные, даже вторая вставка не работает, У меня вопрос, почему сработала 1-я вставка? Я использую MySQL.

Какую базу данных вы используете?

deceze 02.05.2018 14:20

Какой механизм хранения вы используете? Некоторые (например, MyISAM) не поддерживают транзакции, поэтому первая вставка произойдет независимо от того, что произойдет со второй.

Nick 02.05.2018 14:46

Эта строка array(PDO::ATTR_PERSISTENT => true); не выполняет никаких действий. Если вы намереваетесь установить постоянные соединения, этот массив следует передать в качестве аргумента опций в new PDO().

Michael Berkowski 02.05.2018 23:39

я использую MySQL, этот код использует PHP

user9317569 02.05.2018 23:47

Они не говорят о том, какой тип базы данных вы используете, они спрашивают о механизме хранения, см. Здесь stackoverflow.com/questions/4233816/…

andrew 02.05.2018 23:57
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
47
1

Ответы 1

Я обнаружил, почему этот код не работает должным образом, я должен использовать InnoDB при создании таблиц, поэтому я удалил текущие таблицы и создал новую с помощью механизма хранения InnoDB, теперь он работает нормально.

Другие вопросы по теме