Skip to content

Commit 0d3bdf2

Browse files
committed
Initial setup needed for transactional support
Todo: integrate into shortcut methods, need to handle methods routines to close/free/end connection. In reference to #154
1 parent 1463b4d commit 0d3bdf2

File tree

6 files changed

+129
-0
lines changed

6 files changed

+129
-0
lines changed

lib/Database/ez_mysqli.php

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class ez_mysqli extends ezsqlModel implements DatabaseInterface
1313
private $return_val = 0;
1414
private $is_insert = false;
1515
private $shortcutUsed = false;
16+
private $isTransactional = false;
1617

1718
/**
1819
* Database connection handle
@@ -501,4 +502,29 @@ public function getInsertId()
501502
{
502503
return \mysqli_insert_id($this->dbh);
503504
} // getInsertId
505+
506+
/**
507+
* Begin Mysql Transaction
508+
*/
509+
public function beginTransaction()
510+
{
511+
/* turn autocommit off */
512+
$this->dbh->autocommit(false);
513+
$this->dbh->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);
514+
$this->isTransactional = true;
515+
}
516+
517+
public function commit()
518+
{
519+
$this->dbh->commit();
520+
$this->dbh->autocommit(true);
521+
$this->isTransactional = false;
522+
}
523+
524+
public function rollback()
525+
{
526+
$this->dbh->rollBack();
527+
$this->dbh->autocommit(true);
528+
$this->isTransactional = false;
529+
}
504530
} // ez_mysqli

lib/Database/ez_pdo.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ class ez_pdo extends ezsqlModel implements DatabaseInterface
1414
private $return_val = 0;
1515
private $is_insert = false;
1616
private $shortcutUsed = false;
17+
private $isTransactional = false;
1718

1819
/**
1920
* Database connection handle
@@ -469,4 +470,25 @@ public function handle()
469470
{
470471
return $this->dbh;
471472
}
473+
474+
/**
475+
* Begin PDO Transaction
476+
*/
477+
public function beginTransaction()
478+
{
479+
$this->dbh->beginTransaction();
480+
$this->isTransactional = true;
481+
}
482+
483+
public function commit()
484+
{
485+
$this->dbh->commit();
486+
$this->isTransactional = false;
487+
}
488+
489+
public function rollback()
490+
{
491+
$this->dbh->rollback();
492+
$this->isTransactional = false;
493+
}
472494
} // ez_pdo

lib/Database/ez_pgsql.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class ez_pgsql extends ezsqlModel implements DatabaseInterface
1313
private $return_val = 0;
1414
private $is_insert = false;
1515
private $shortcutUsed = false;
16+
private $isTransactional = false;
1617

1718
/**
1819
* Database connection handle
@@ -354,4 +355,25 @@ public function getPort()
354355
{
355356
return $this->database->getPort();
356357
} // getPort
358+
359+
/**
360+
* Begin Postgresql Transaction
361+
*/
362+
public function beginTransaction()
363+
{
364+
@\pg_query($this->dbh, "BEGIN");
365+
$this->isTransactional = true;
366+
}
367+
368+
public function commit()
369+
{
370+
@\pg_query($this->dbh, "COMMIT");
371+
$this->isTransactional = false;
372+
}
373+
374+
public function rollback()
375+
{
376+
@\pg_query($this->dbh, "ROLLBACK");
377+
$this->isTransactional = false;
378+
}
357379
} // ez_pgsql

lib/Database/ez_sqlite3.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class ez_sqlite3 extends ezsqlModel implements DatabaseInterface
1313
private $return_val = 0;
1414
private $is_insert = false;
1515
private $shortcutUsed = false;
16+
private $isTransactional = false;
1617

1718
/**
1819
* Database connection handle
@@ -309,4 +310,25 @@ public function handle()
309310
{
310311
return $this->dbh;
311312
}
313+
314+
/**
315+
* Begin sqlite3 Transaction
316+
*/
317+
public function beginTransaction()
318+
{
319+
$this->dbh->exec('BEGIN');
320+
$this->isTransactional = true;
321+
}
322+
323+
public function commit()
324+
{
325+
$this->dbh->exec('COMMIT');
326+
$this->isTransactional = false;
327+
}
328+
329+
public function rollback()
330+
{
331+
$this->dbh->exec('ROLLBACK');
332+
$this->isTransactional = false;
333+
}
312334
}

lib/Database/ez_sqlsrv.php

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class ez_sqlsrv extends ezsqlModel implements DatabaseInterface
1313
private $return_val = 0;
1414
private $is_insert = false;
1515
private $shortcutUsed = false;
16+
private $isTransactional = false;
1617

1718
/**
1819
* ezSQL non duplicating data type id's; converting type ids to str
@@ -428,4 +429,25 @@ public function handle()
428429
{
429430
return $this->dbh;
430431
}
432+
433+
/**
434+
* Begin sqlsrv Transaction
435+
*/
436+
public function beginTransaction()
437+
{
438+
@\sqlsrv_begin_transaction($this->dbh);
439+
$this->isTransactional = true;
440+
}
441+
442+
public function commit()
443+
{
444+
@\sqlsrv_commit($this->dbh);
445+
$this->isTransactional = false;
446+
}
447+
448+
public function rollback()
449+
{
450+
@\sqlsrv_rollback($this->dbh);
451+
$this->isTransactional = false;
452+
}
431453
} // end class

lib/DatabaseInterface.php

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,4 +102,19 @@ public function handle();
102102
* Reset connection handle
103103
*/
104104
public function reset();
105+
106+
/**
107+
* Begin Transaction
108+
*/
109+
public function beginTransaction();
110+
111+
/**
112+
* Commit Transaction
113+
*/
114+
public function commit();
115+
116+
/**
117+
* Rollback Transaction
118+
*/
119+
public function rollback();
105120
}

0 commit comments

Comments
 (0)