Как я могу реализовать фиксацию/откат для MySQL в PHP?

Наткнулся на этот вопрос, ища быстрый и минималистский фрагмент, который я мог бы использовать. Пришлось собрать его сам из сообщений выше. Возможно, кому-то это будет полезно:

data_frame_trimmed = data_frame.apply(lambda x: x.str.strip() if x.dtype == "object" else x)
7
задан Andrew G. Johnson 1 December 2008 в 09:49
поделиться

3 ответа

Смотрите на это учебное руководство на транзакциях с PDO.

В основном обертывают длительный код в:

$dbh->beginTransaction();
...
$dbh->commit();

И согласно этой странице документа PDO:

, "Когда сценарий заканчивается или когда соединение собирается быть закрытым, если у Вас есть выдающаяся транзакция, PDO будет автоматически откатывать ее".

, Таким образом, Вы потеряете транзакцию, которая находилась на рассмотрении когда приведенный к таймауту сценарий.

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

10
ответ дан 6 December 2019 в 23:15
поделиться

Необходимо использовать основанные на InnoDB таблицы для транзакций, тогда пользуются любой библиотекой как PDO или MySQLi, который поддерживает их.

1
ответ дан 6 December 2019 в 23:15
поделиться
<?php
//This may help someone....This code commit the transactions
//only if both queries insert and update successfully runs

$mysqli=new mysqli("localhost","user_name","password","db_name");

if(mysqli_connect_errno())
{
    echo "Connection failed: ".mysqli_connect_error();
}
else
{
    $mysqli->autocommit(FALSE);
    $mysqli->query("insert into tblbook (id,cid,book) values('','3','book3.1')");
    echo $q_ins=$mysqli->affected_rows."<br>";
    $mysqli->query("update tblbook set book='book3' where cid='3'");
    echo $q_upd=$mysqli->affected_rows."<br>";

    if($q_ins==1 && $q_upd==1)
    {
        $mysqli->commit();
        echo "Commit<br>";
    }
    else
    {
        $mysqli->rollback();
        echo "Rollback<br>";
    }
}
?>
-1
ответ дан 6 December 2019 в 23:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: