PDO::inTransaction

(PHP 5 >= 5.3.3, Bundled pdo_pgsql, PHP 7, PHP 8)

PDO::inTransaction Vérifie si nous sommes dans une transaction

Description

public PDO::inTransaction(): bool

Vérifie si une transaction est actuellement active dans le driver. Cette méthode ne fonctionne que pour les drivers de base de données qui supportent les transactions.

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Retourne true si une transaction est actuellement active, false sinon.

add a note add a note

User Contributed Notes 5 notes

up
16
r. hanouwer
12 years ago
Exceptions regarding existing active transactions were thrown while I was almost certain sufficient checks were in place.
However, I quickly found out that a strict boolean comparison to PDO::inTransaction() was failing.

Using var_dump I learned that this function was returning integers, not boolean values.

var_dump(PDO::inTransaction()); // int(1) || int(0)
up
7
christopeh at xhaleera dot com
10 years ago
On OS X 10.9 with PHP 5.4.10, this function seems to correctly return bool(true) or bool(false) and not anymore integers.
up
1
jlh
3 years ago
Important note: This will only detect whether a transaction has been started using beginTransaction(). It will not be able to detect transactions started by any other means, for example by executing "START TRANSACTION".
up
0
Anonymous
3 years ago
In addition to what jlh says,
even with SQLite3 which automatically starts transaction,
inTransaction() only works after beginTransaction().

<?php
try{

   
$pdo = new PDO('sqlite:test.sql3', null, null, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);
   
var_dump($pdo->inTransaction());echo "<br>";    // bool(false) : before beginTransaction()
   
$pdo->beginTransaction();
   
var_dump($pdo->inTransaction());echo "<br>";    // bool(true)  : after beginTransaction()
   
$pdo->rollBack();
   
var_dump($pdo->inTransaction());echo "<br>";    // bool(false) : after commit() or rollBack()

}catch (PDOException $e){

    echo
'PDOException: ' . $e->getMessage();

}catch (
Exception | ErrorException $e){

   
var_dump($e);

}
up
-8
ron korving
13 years ago
This method actually seems to work fine on PHP5.3.5 (and probably a few older versions).
To Top