mysqli::begin_transaction

mysqli_begin_transaction

(PHP 5 >= 5.5.0, PHP 7, PHP 8)

mysqli::begin_transaction -- mysqli_begin_transactionStartet eine Transaktion

Beschreibung

Objektorientierter Stil

publicmysqli::begin_transaction(int$flags = 0, ?string$name = null): bool

Prozeduraler Stil:

mysqli_begin_transaction(mysqli$mysql, int$flags = 0, ?string$name = null): bool

Beginnt eine Transaktion; benötigt die InnoDB-Engine (sie ist standardmäßig aktiviert). Für weitere Details über die Funktionsweise von MySQL-Transaktionen siehe » http://dev.mysql.com/doc/mysql/en/commit.html.

Parameter-Liste

mysql

Nur bei prozeduralem Aufruf: ein von mysqli_connect() oder mysqli_init() zurückgegebenes mysqli-Objekt.

flags

Gültige Flags sind:

  • MYSQLI_TRANS_START_READ_ONLY: Startet die Transaktion als "START TRANSACTION READ ONLY" (nur lesend). Benötigt MySQL 5.6 oder höher.

  • MYSQLI_TRANS_START_READ_WRITE: Startet die Transaktion als "START TRANSACTION READ WRITE" (lesend und schreibend). Benötigt MySQL 5.6 oder höher.

  • MYSQLI_TRANS_START_WITH_CONSISTENT_SNAPSHOT: Startet die Transaktion als "START TRANSACTION WITH CONSISTENT SNAPSHOT".

name

Name des Sicherungspunkts für die Transaktion

Rückgabewerte

Gibt bei Erfolg true zurück. Bei einem Fehler wird false zurückgegeben.

Changelog

VersionBeschreibung
8.0.0name ist nun nullable (akzeptiert den null-Wert).

Beispiele

Beispiel #1 mysqli::begin_transaction()-Beispiel

Objektorientierter Stil

<?php


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = new mysqli("localhost", "my_user", "my_password", "world");


$mysqli->query("CREATE TABLE IF NOT EXISTS language (
Code text NOT NULL,
Speakers int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
);


$mysqli->begin_transaction();

try {

$mysqli->query("INSERT INTO language(Code, Speakers) VALUES ('DE', 42000123)");


$language_code = 'FR';
$native_speakers = 'Unknown';
$stmt = $mysqli->prepare('INSERT INTO language(Code, Speakers) VALUES (?,?)');
$stmt->bind_param('ss', $language_code, $native_speakers);
$stmt->execute();


$mysqli->commit();
} catch (
mysqli_sql_exception $exception) {
$mysqli->rollback();

throw
$exception;
}

Prozeduraler Stil

<?php


mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

$mysqli = mysqli_connect("localhost", "my_user", "my_password", "world");


mysqli_query($mysqli, "CREATE TABLE IF NOT EXISTS language (
Code text NOT NULL,
Speakers int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
);


mysqli_begin_transaction($mysqli);

try {

mysqli_query($mysqli, "INSERT INTO language(Code, Speakers) VALUES ('DE', 42000123)");


$language_code = 'FR';
$native_speakers = 'Unknown';
$stmt = mysqli_prepare($mysqli, 'INSERT INTO language(Code, Speakers) VALUES (?,?)');
mysqli_stmt_bind_param($stmt, 'ss', $language_code, $native_speakers);
mysqli_stmt_execute($stmt);


mysqli_commit($mysqli);
} catch (
mysqli_sql_exception $exception) {
mysqli_rollback($mysqli);

throw
$exception;
}

Anmerkungen

Hinweis:

Diese Funktion funktioniert nicht mit Tabellentypen, die keine Transaktionen unterstützen (wie MyISAM oder ISAM).

Siehe auch

To Top