Ciao a tutti,
sto facendo delle prove con le transazioni e, nonostante tutto, continua a scrivere nel db anche se faccio un rollback.
In che cosa sbaglio?
Data questa classe:
Codice PHP:
class Modelo_rc {
private $pdo;
public function __construct($host, $db, $user, $pw) {
$this->startConnection($host, $db, $user, $pw);
}
public function setRc($uniqueUserCode) {
$sql = "INSERT INTO tb_user (uniqueUserCode) VALUES (?)";
$array = [$uniqueUserCode];
$this->insert($sql, $array);
if (FALSE) {
//in questo punto forzo sempre il rollback, ma comunque mi scrive il record nel DB
$this->pdo->commit();
} else {
var_dump($this->pdo->rollBack());
}
}
private function startConnection($host, $db, $user, $pw) {
if (!$this->pdo) {
try {
$this->pdo = new PDO("mysql:host=" . $host . ";dbname=" . $db . ";charset=utf8", $user, $pw);
$this->pdo->beginTransaction();
return $this->pdo;
} catch (Exception $e) {
Errores::set(__CLASS__, __FUNCTION__, "Db_2 Error: " . $e);
}
} else {
return $this->pdo;
}
}
private function insert($sql, $array) {
$stmt = $this->pdo->prepare($sql);
$stmt->execute($array);
}
}