- extrem minimierter portierungsaufwand, PDO funktioniert mit vielen weiteren datenbanken
- objektorientierung von haus aus
- methoden für transaktionen ungefähr so:
PHP-Code:
$connection->beginTransaction();
try {
$connection->exec('INSERT....');
$connection->exec('UPDATE ....');
} catch (Exception $e) {
$connection->rollback();
}
$connection->commit();
das ist mal eben aus dem kopf zusammengedacht, kann stellenweise nicht stimmen (die funktionen schon nur die reihenfolge / objekteigenschaften nicht) aber so sehen transaktionen mit PDO aus.
ordentliches selecten geht auch wunderbar:
PHP-Code:
$result = $connection->query('
select
blah,
hallo
from
blubb
where
blubb_id = ' . $connection->quote($variable, PDO::PARAM_INT)
);
while($element = $result->fetch(PDO::FETCH_ASSOC) {
echo $element['blubb'];
}
wenn du direkt alles haben willst geht auch:
PHP-Code:
$elements = $connection->fetchAll(PDO::FETCH_ASSOC);
ausserdem lässt sich PDO viel besser in objektorientierte geschichten intergrieren, wenn du ein results von mysql query verarbeiten musst kannst du nicht so einfach festlegen das es genau so ein mysql_query result ist. Das kann auch ne normale int zahl sein.
mit ner PDO connection machst du einfach:
PHP-Code:
class db_kram {
private $connection = null;
public function __construct(PDO $connection) {
$this->connection = $connection;
}
}
gehts besser und einfacher? nein. ausserdem kannst du mit PDO sachen auch superfix iteratoren bauen und ne eigene kleine abstraktionsschicht.
Propel benutzt intern PDO. das ist nochmal objektorientierter als PDO.
Ist auch eine mehr standardkonforme api als die mysql funktionen
