Andre Duarte
Andre Duarte

Reputation: 61

Using LOB data in PHP with PDO instead of OCI_Connect

I was using OCI_Connect to connect to my Oracle database. Because of some internal plicies, i need to change it to PDO.

With OCI_Connect, i can read LOB data from database with "->load()" function in the result, something like this:

$this->Conn = oci_connect($this->User, $this->Pass, $this->Name, 'AL32UTF8');
$sql = "select field from table";
$s = oci_parse($this->Conn, $sql);
$res = oci_fetch_array($s, OCI_ASSOC + OCI_RETURN_NULLS)
echo $res[0]['FIELD']->load();

and it worked very well.

Now i need to do the same stuff with PDO, and because all my queries may change the number and name of the fields, i cannot bind the variables before executing it.

What i'm using now to connect:

$dbTns = "(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = $server)(PORT = $port)) (CONNECT_DATA = (SERVICE_NAME = $service_name) (SID = $sid)))";
$paramArray = array( PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC);
$this->PDO = new PDO("oci:dbname=" . $dbTns . ";charset=utf8", $db_username, $db_password, $paramArray );

With PDO, everything works fine, but i can't use the "->load()" function in the LOB field, as it does not exists here.

Is there an equivalent way to get the data after the query run?

Any suggestions are welcome. (yes, i did search for a solution before posting that question here)

Upvotes: 0

Views: 80

Answers (0)

Related Questions