Функция отката не работает должным образом в PHP? - PullRequest
0 голосов
/ 29 января 2019

Я написал код для ввода записи, если первая запись введена, то можно ввести только секунду, если вторая не удастся, чем первая произойдет откат, и никаких изменений не произойдет

<?php
include '../function.php';
// Set autocommit to off
mysqli_autocommit($mysqli,FALSE);
// Insert some values 
$a=mysqli_query($mysqli,"INSERT INTO test VALUES ('10','2')");
if($mysqli->affected_rows > 0)
{
    $b=mysqli_query($mysqli,"INSERT INTO test VALUES ('7','2')");
    if($mysqli->affected_rows > 0){
        mysqli_commit($mysqli);   
        echo "commited";
    }
    else{
        mysqli_rollback($mysqli);
        echo "rollback";
    }    
}else{
        echo "nothing";
}
// Close connection
mysqli_close($mysqli);

Но приведенный выше кодоткат моей первой записи, если не удалось сохранить вторую запись.

1 Ответ

0 голосов
/ 29 января 2019

предлагают вам использовать begin_transaction и попробовать функцию catch.ниже приведен пример:

    $link = mysqli_connect("127.0.0.1", "my_user", "my_password", "sakila");

if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}
try {
    mysqli_begin_transaction($link, MYSQLI_TRANS_START_READ_WRITE);

    mysqli_query($link, "Insert statement 1");
    mysqli_query($link, "Insert statement 2");
    mysqli_commit($link);
    } catch (Exception $e) {
        mysqli_rollback();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...