[PHP, MySQL] PDO, MySQLi, Transactions en Storage engines

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Ik ben bezig een programma van de bodem af te herschrijven. Het oude programma maakt gebruik van de 'gewone' mysql functies van PHP en gebruikt MyIsam als storage engine. Nu wil ik alles goed en degelijk opzetten met zo min mogelijk kans op database inconsistentie.

Omdat het om een applicatie gaat die relatief veel aan INSERTS doet leek het me een slim plan om transacties in te gaan voeren. Ook omdat er vaak in 2 of meer tabellen toegevoegd wordt, waarbij dan over id's wordt gekoppeld.
Ik heb begrepen dat dan InnoDB de beste optie is als storage engine, omdat MyIsam niet aan transcations doet.
Tot zover is het mij redelijk helder.

Nu wilde ik ook de database functies herschrijven die de app gebruikt om de database te benaderen. D.m.v prepared statements wil ik SQL injecties uit de weg ruimen. Nu zijn daar volgens mij 2 mogelijkheden voor:
- PDO
- MySQLi

Voor de laatste heb ik vandaag een class geschrijven. Wat mij echter opviel was dat het heel erg lastig (althans voor mij) was om van een query resultaat normaal de data eruit te loopen. Bij de oude mysql extensie kon ik gewoon mysql_fetch_row() o.i.d. op een result gooien en dan kwam er data uit. Bij MySQLi zit ik te klooien met mysqli_fetch_field(), mysqli_stmt_bind_result(), mysqli_stmt_fetch() en weet ik veel wat allemaal nog meer. Denk ik te moeilijk of kan dit makkelijker met MySQLi?

Of: Is PDO een betere oplossing voor mijn situatie?

Het liefst programmeer ik procedureel (vraag me niet waarom, het is zo) en daarom was mijn oog gevallen op MySQLi. Of kan ik met PDO ook procedureel programmeren?

Acties:
  • 0 Henk 'm!

  • kwaakvaak_v2
  • Registratie: Juni 2009
  • Laatst online: 02-06 12:29
of je kijkt ook eens naar een ORM laag als doctrine die met een klein beetje overhead je wel redelijk wat gemak kan opleveren :)


(voor transactie zie bijvoorbeeld : http://www.doctrine-proje...anual/1_2/en/transactions)

Persoonlijk vind ik het wel een fijne manier van werken, geen zorgen meer over hoe je data in je sql server terecht komt.

Driving a cadillac in a fool's parade.


Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
Persoonlijk heb ik zo min mogelijk extra lagen, ik wil weten wat de code doet en waar, als het fout gaat, ik de fout zoeken moet.

Acties:
  • 0 Henk 'm!

  • Leftblank
  • Registratie: Juni 2004
  • Laatst online: 21:52
L0calh0st schreef op donderdag 22 april 2010 @ 21:28:
Persoonlijk heb ik zo min mogelijk extra lagen, ik wil weten wat de code doet en waar, als het fout gaat, ik de fout zoeken moet.
Tja, dat is een keuze natuurlijk, maar een ORM-systeem geeft je wel een hele lading aan gemak wat je veel tijd en fouten kan schelen. Alles wat je zelf niet hoeft te coden en al goed getest komt is mooi meegenomen.

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Nu online
L0calh0st schreef op donderdag 22 april 2010 @ 16:46:
Of kan ik met PDO ook procedureel programmeren?
Ja. Met PDO doe je iets als:
PHP:
1
2
3
4
5
6
$db = new PDO($dsn,...);
$stmt = $db->prepare($sql);
$stmt->execute();
while($row = $stmt->fetchRow()) {
  var_dump($row);
}


En dan programmeer je dus procedureel ondanks dat je objecten gebruikt.

Acties:
  • 0 Henk 'm!

  • bindsa
  • Registratie: Juli 2009
  • Niet online
rutgerw schreef op donderdag 22 april 2010 @ 21:45:
[...]


Ja. Met PDO doe je iets als:
PHP:
1
2
3
4
5
6
$db = new PDO($dsn,...);
$stmt = $db->prepare($sql);
$stmt->execute();
while($row = $stmt->fetchRow()) {
  var_dump($row);
}


En dan programmeer je dus procedureel ondanks dat je objecten gebruikt.
Ok bedankt ;)
Pagina: 1