PHP Classes


Recommend this page to a friend!
  Classes of Eustaquio Rangel de Oliveira Jr.   PHP PDO OCI   Download  
Role: Documentation
Content type: text/markdown
Description: Auxiliary data
Access Oracle databases using a PDO class wrapper
Author: By
Last change: Update of
Date: 14 days ago
Size: 2,610 bytes


Class file image Download


| :warning: WARNING This software is abandonware. As the creator and maintainer, I don't even use PHP or Oracle _for years_, so, I can't support it anymore. It should work ok for PHP untill version 7, but seems that with 8.1 there are some alerts. Feel free to fork it and keep it going. | | --- |

Wrapping on PHP OCI functions to simulate a PDO object, using just pure PHP and the oci_* functions.

Let's face it. Installing PHP, PDO, Oracle drivers and PDO OCI is not a pleasant task. Is more pleasant to insert bamboo sticks under your fingernails than make all the voodoo needed to accomplish that task. And there are two big problems with that:

  1. If you install `pdo_oci` with `pecl` you'll get a version from 2005 ( Even Christian Bale is now far from the things from 2005, and wow, he had a cool suit and a very nice car. And all came in black.
  2. If you follow the official docs, you'll need to compile PHP and still get an experimental extension ( Come on. We can't (yeah, we know how to do it!) compile PHP on every server we need and just for an experimental feature?

That's why I made PDOOCI.


First install the Oracle drivers (I like the instant client versions) and the oci8 package (with pecl, this one seems to be updated often).

With Composer

$ composer require taq/pdooci

    "require": {
        "taq/pdooci": "^1.0"

require_once 'vendor/autoload.php';

$pdo = new PDOOCI\PDO("mydatabase", "user", "password");

Without Composer

Why are you not using composer? Download the src folder from the repo and rename it to PDOOCI, then require the PDOOCI/PDO.php file.

require_once "PDOOCI/PDO.php";

$pdo = new PDOOCI\PDO("mydatabase", "user", "password");

Yeah, the rest should work exactly the same as if you were using a PDO object. :-)


There is a test suite (using PHPUnit with a version bigger than 6.x) on the test directory. If you want to test (you must test your code!), create a table called people with two columns:

  1. `name` as `varchar2(50)`
  2. `email` as `varchar2(30)`

And some environment variables:

  1. `PDOOCI_user` with the database user name
  2. `PDOOCI_pwd` with the database password
  3. `PDOOCI_str` with the database connection string

Don't forget to run composer install!

And then go to the test dir and run PHPUnit like:

phpunit --colors .