BeginTransaction commit e rollBack com PDO
Buenas, estou migrando os meu "pojetos" de mysql_* para PDO, e me deparei com os begins e commits, minha dúvida é a seguinte, deste modo ele vai fazer o commit "bunitasso"??
Código da Classe:
<?php
class Bairro {
// Atributo para conexão com o banco de dados
private $pdo = null;
// Atributo estático para instância da própria classe
private static $bairros = null;
private function __construct($conexao) {
$this->pdo = $conexao;
}
public static function getInstance($conexao) {
if (!isset(self::$bairros)):
self::$bairros = new Bairro($conexao);
endif;
return self::$bairros;
}
public function insert($rNome) {
try {
$this->pdo->beginTransaction();
$rSql = "INSERT INTO bairros (nome,data_cad) VALUES (:nome,:data_cad)";
$stm = $this->pdo->prepare($rSql);
$stm->bindValue(':nome', $rNome);
$stm->bindValue(':data_cad', date('Y-m-d'));
$stm->execute();
if ($stm) {
$this->pdo->commit();
Logger('Usuario:[' . LOGIN . '] - Inseriu bairro');
}
return $stm;
} catch (PDOException $erro) {
$this->pdo->rollBack();
Logger('Usuario:[' . LOGIN . '] - Erro na linha:' . $erro->getLine() . ' - Mensagem:' . $erro->getMessage());
}
}
Código da Classe Conexão:
<?php
DEFINE('USER', 'root');
DEFINE('PASSWORD', 'root');
DEFINE('HOST', 'localhost');
DEFINE('DBNAME', 'imo');
DEFINE('CHARSET', 'utf8');
class Conexao {
//Atributo estático para instância do PDO
private static $pdo;
// Escondendo o construtor da classe
private function __construct() {
//
}
public static function getInstance() {
if (!isset(self::$pdo)) {
try {
$opcoes = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES UTF8', PDO::ATTR_PERSISTENT => TRUE);
self::$pdo = new PDO("mysql:host=" . HOST . "; dbname=" . DBNAME . "; charset=" . CHARSET . ";", USER, PASSWORD, $opcoes);
self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
print "Erro: " . $e->getMessage();
}
}
return self::$pdo;
}
}
?>Discussão (3)
Carregando comentários...