Com connectar-se a l'Oracle corporatiu via PDO

Per connectar-se amb l'Oracle corporatiu amb PHP utilitzem PDO, que és una capa de connexió que funciona per sobre dels diferents divers de connexió de forma transparent per al programador. Això ens permet utilitzant la mateixa sintaxi de connexió independentment del driver que estiguem utilitzant per sota (OCI8, etc...) o de la base de dades a la que ens vulguem connectar (Oracle, MySQL, etc...).

A més, PDO ofereix altres funcionalitats com les sentències precompilades, accés a les dades mitjançant POO, etc. que podem fer-ne us. Podeu llegir el manual complet a: http://php.net/manual/en/book.pdo.php

Per connectar-nos als tres entorns que tenim a la Diputaió de Barcelona (SIT -desenvolupament-, TQA -preproducció-integració-), ORI -producció-) utilitzarem els TSNames definits en el servidor, per tant, no caldrà especificar ni IPs ni ports, només el nom de la base de dades. A més, cal notar, que pel disseny de ROLS del nostre sistema corporatiu cal llençar la instrucció "SET ROLE ALL" després de connectar-nos per tal que l'usuari adquireixi tots els drets necessaris.

Així el codi de connexió quedarà de la següent forma:

try {
  $dbh = new PDO('oci:dbname=ori;charset=UTF8', 'usuari', 'password');
  $dbh->exec('SET ROLE ALL');
  $dbh->exec('ALTER SESSION SET NLS_COMP=LINGUISTIC');
  $dbh->exec('ALTER SESSION SET NLS_SORT=CATALAN_AI');
  $dbh->exec("ALTER SESSION SET NLS_TERRITORY='CATALONIA'");
}
catch (PDOException $e) {
  echo 'Error de connexió: ' . $e->getMessage();
};

per connectar-nos a la resta d'entorns només caldrà substituir eldbname=ori per dbname=tqa o dbname=sit.

Un cop connectats a la base de dades podrem realitzar qualsevol consulta SQL amb PDO i recuperar les dades a través dels mètodes que ens proporciona PDO, per exemple:

  $stmt = $dbh->prepare('SELECT camp1, camp2 FROM taula1');
  $stmt->execute();
  $resultat = $stmt->fetchAll(PDO::FETCH_ASSOC);

Si fem INSERTS, UPDATES, etc. també podem treballar amb transaccions:

  $dbh->beginTransaction();
  ...
  $dbh->commit();
1
Grups de treball:
Plataforma PHP