SQLite3 vs. PDOSqlite
Baba
- php
Wie der Name schon sagt, sollte ich SQLite3 oder die PDO-Klasse verwenden, wenn ich SQLite3 Datenbanken verwalte. Ich benutze letzteres, weiß aber nicht mehr warum :> Gab es da irgendeinen Vorteil? Oder sogar einen Nachteil?
Cheers,
Baba
Tach!
Wie der Name schon sagt, sollte ich SQLite3 oder die PDO-Klasse verwenden, wenn ich SQLite3 Datenbanken verwalte. Gab es da irgendeinen Vorteil? Oder sogar einen Nachteil?
Du kannst das nur nach deinem Bauchgefühl entscheiden. Ob Eigenschaften Vorteile oder Nachteile sind, muss situationsbedingt entschieden werden.
Eigenschaften nativer Librarys
Die obige Liste ist sicher unvollständig und subjektiv. Ist es dir wichtig, eine einheitlich verwendbare API zu haben oder möchtest du die Eingenschaften des DBMS bestmöglich nutzen können? Das Argument, das DBMS unter der Abstraktionsschicht tauschen zu können, ist in der Praxis meist weniger relevant als es bei solchen Vergleichen immer hervorgehoben wird.
dedlfix.
Danke für die gute Antwort!
Eigenschaften nativer Librarys
- unterschiedliche Systeme = unterschiedliche Eigenschaften = unterschiedliche Bedienung
Meinst Du mit "unterschiedliche Systeme" unterschiedliche DB-Typen (wie SQLite <> MySQL) oder unterschiedliche Server- oder php-Konfigurationen?
Eigenschaften von Abstraktionen
- beim Wechsel des DBMS sind keine neuen Funktionen kennenzulernen
Also, die Vorstellung, das ich unter der Bedienung einfach mal von SQLite zu MySQL wechsele, klingt einfach ein bisschen zu traumhaft... Abgesehen davon plane ich fest bei SQLite zu bleiben. Nur die großen Sachen kommen vielleicht später in MySQL-DB's.
Die obige Liste ist sicher unvollständig und subjektiv. Ist es dir wichtig, eine einheitlich verwendbare API zu haben oder möchtest du die Eingenschaften des DBMS bestmöglich nutzen können?
Wichtig ist mir, die Query's sicher zu bauen. Dafür schätze ich die Methode SQLite3::escapeString
. Die gibt es aber bei PDO gar nicht. Nun verwende ich PDO und sqlite_escape_string()
;
Ich hoffe das ist gleichbedeutend.
Außerdem schätze ich ->prepare() und ->exec(), die gibt es aber bei beiden.
Vielen Dank nochmal
dedlfix.
Grüße,
Baba
Wichtig ist mir, die Query's sicher zu bauen. Dafür schätze ich die Methode
SQLite3::escapeString
. Die gibt es aber bei PDO gar nicht. Nun verwende ich PDO undsqlite_escape_string()
;Ich hoffe das ist gleichbedeutend.
Hm...PDO::quote?
Tach!
- unterschiedliche Systeme = unterschiedliche Eigenschaften = unterschiedliche Bedienung
Meinst Du mit "unterschiedliche Systeme" unterschiedliche DB-Typen (wie SQLite <> MySQL) oder unterschiedliche Server- oder php-Konfigurationen?
Unterschiedliche DBMS. Jedes hat seine eigene API, weil es seine individuellen Leistungsmerkmale unterstützen will. Üblicherweise hat man dann mehr oder weniger 1:1 PHP-Funktionen gegen dieses DBMS-API programmiert, um die Funktionalität nutzen zu können.
Eigenschaften von Abstraktionen
- beim Wechsel des DBMS sind keine neuen Funktionen kennenzulernen
Also, die Vorstellung, das ich unter der Bedienung einfach mal von SQLite zu MySQL wechsele, klingt einfach ein bisschen zu traumhaft...
Die Funktionen für 08/15-Datenbankhandling sind mit einer Abstraktion für jedes DBMS gleich. Aber damit bekommst du nicht alle Eigenheiten des DBMS wegnivelliert. Die Unterschiede der SQL-Dialekte bleiben vorhanden. Wenn du also Dinge verwendest, die nicht im Standard sind, kannst du eine Migration durch einfaches Austauschen des Connetion-Strings vergessen.
Die obige Liste ist sicher unvollständig und subjektiv. Ist es dir wichtig, eine einheitlich verwendbare API zu haben oder möchtest du die Eingenschaften des DBMS bestmöglich nutzen können?
Wichtig ist mir, die Query's sicher zu bauen. Dafür schätze ich die MethodeSQLite3::escapeString
. Die gibt es aber bei PDO gar nicht.
Verwende Prepared Statements, da besteht keine Notwendigkeit des Escapens. Es darf auch nicht getan werden, wenn du deine Daten icht verfälschen willst. Oder du nimmst die dafür vorgesehene Funktion: PDO::quote(). Diese kümmert sich nicht nur um das Escapen, sondern auch um das Quoten, denn Quote-Zeichen können je nach DBMS auch unterschiedlich sein.
Außerdem schätze ich ->prepare() und ->exec(), die gibt es aber bei beiden.
Ah ja, warum willst du dann noch escapen/quoten?
dedlfix.