Есть самописный класс наследующий от PDO.
Код: Выделить всё
class DB extends PDO {
..................................
function __construct()
{
$dsn = $this->dbtype .
':host=' . $this->dbhost .
' port=' . $this->dbport .
' dbname=' . $this->dbname .
' user=' . $this->dblogin .
' password=' . $this->dbpassw;
$user = $this->db[$data]['dblogin'];
$passw = $this->db[$data]['dbpassw'];
try {
parent::__construct($dsn, $user, $passw,
array(PDO::ATTR_PERSISTENT => true));
$this->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
}
...................................
function startTransaction()
{
return parent::beginTransaction();
//return $this->beginTransaction();
}
function commitTransaction()
{
return parent::commit();
//return $this->commit();
}Данные замечательно получаются и вносятся в базы, но вот понадобилось мне использовать транзакцию, до этого никогда не сталкивался, и на выходе я получил следующее:
Код: Выделить всё
Fatal error: Uncaught exception 'PDOException' with message 'There is no active transaction' in /var/www/plan/include/class.db.php:83
Stack trace:
#0 /var/www/plan/include/class.db.php(83): PDO->commit()
#1 /var/www/plan/comments.php(541): DB->commitTransaction()
#2 /var/www/plan/index.php(140): require_once('/var/www/plan/c...')
#3 {main} thrown in /var/www/plan/include/class.db.php on line 83Сам файл содержит следующий код:
Код: Выделить всё
<?php
.........................
$db = new DB();
............................
$db->startTransaction();
....................................
$db->commitTransaction();Похоже, что я не корректно написал класс, но в чём ошибка?
Спасибо.