Ik heb een zelfgemaakte database-class die de queries die mijn appje nodig heeft genereert met MySQLi.
Nu wil ik die class ombuigen van MySQLi naar PostgreSQL. PHP heeft daarvoor een keuze voor twee opties, pgsql en PDO. Beiden heb ik nog niet eerder gebruikt. Ik beschik dus ook over de meest recente PostgreSQL 9.4.5.
Op het eerste gezicht ben ik wel gecharmeerd van PDO, maar nu loop ik tegen het volgende aan:
Om queries veilig te kunnen genereren dingen moeten schema-, tabel- en kolomnaam kunnen worden ge-escape-d, en dat gaat met PostgreSQL net anders dan met literals. Dientengevolge zijn er in pgsql verschillende functies voor:
- pg_escape_string(), pg_escape_literal() en pg_escape_bytea() voor literals en binaire data
- pg_escape_identifier() voor escapen van identifiers (schema-, tabel- en kolomnaam)
Echter, als ik die functionaliteit in PDO zoek dan lijkt die niet te bestaan?
Uiteraard ben ik niet de eerste met die vraag, en hij is al eerder beantwoord op deze plek:
http://stackoverflow.com/questions/13448274/escaping-column-name-with-pdo
Mijn vraag voor PHP-hulp: wie gebruikt PDO met PostgreSQL en heeft hier dus ervaring mee? Ben ik inderdaad aangewezen op pgsql? (geen ramp verder) of is het toch gewoon met PDO op te lossen?
[size=xsmall]Toevoeging op 02/11/2015 12:09:03:[/size]
Kleine toevoeging: de reden waarom ik niet zit te springen op de whitelisting-oplossing op StackOverflow is dat ik hem vrij omslachtig vind, daarnaast check ik ook van te voren of een tabel bestaat* en het zou omslachtig worden om voorafgaand aan elke query een whitelist te bouwen om daarop te checken.
* http://stackoverflow.com/questions/20582500/how-to-check-if-a-table-exists-in-a-given-schema (gelukkig kan ik al van 9.4 gebruik maken)
2.010 views