Door
Jens V
op 17-01-2011 00:17
gewijzigd op 17-01-2011 10:20
3.839 views
Hoi allen,
Is er een manier om te weten of er een transaction op een bepaald database-object open staat als je MySQL gebruikt i.s.m. PDO? Ik gebruik InnoDB, dus transactions zijn ondersteund.
Nog niet opgevallen dat ik daarnaar verwijs? ;) inTransaction: "Note that currently only the PostgreSQL driver implements this method."
?Onbekende gebruiker
17-01-2011 10:23
Jens V op 17/01/2011 10:15:47
Nog niet opgevallen dat ik daarnaar verwijs? ;) inTransaction: "Note that currently only the PostgreSQL driver implements this method."
Nee, dat is niet echt duidelijke verwijzing (btw, je kunt gewoon php links maken met de php tag).
Volgens mij ondersteund mysql dit niet echt (het is mysql he) dus misschien zelf wat maken, of overstappen op postgresql?
PostgreSQL heb ik al mee gewerkt, maar het spijtige daarin is dat maar weinig hosts het hebben... Ik kom het probleem nu pas tegen (in de catch heb ik een $db->rollBack(); staan want ik gebruik 1 grote try-catch block voor alle queries.), en om nu nog een wrapper voor rond de db klasse te schrijven is het wat laat.
Ik zou het idd wel kunnen oplossen door in die wrapper-klasse zelf een bool bij te houden die aangeeft of er een transaction open staat...
Karl Karl op 17/01/2011 10:23:55
Nee, dat is niet echt duidelijke verwijzing (btw, je kunt gewoon php links maken met de php tag).
Ik dacht dat vanwege de exacte naam van die functie in de titel :) En van die php-links, ik wist niet of dat ook met die pdo-links gaat. -> testje: [php]pdo.intransaction[/php]
Dus wat ik eigenlijk nodig heb, die 'wrapper'-klasse, is niet meer dan dit:
<?php
class Database extends PDO
{
private $in_transaction = false;
public startTransaction()
{
$this->in_transaction = true;
return $this->beginTransaction();
}
public inTransaction()
{
return $this->in_transaction;
}
// en ook zo voor commit en rollback
}
?>
Is er een manier dat ik die startTransaction kan beginTransaction noemen? Dus effectief die functie 'overschrijven', maar binnen in toch nog de originele aanroepen?