From 21b467451d942ca21d2b2ca6240e6e36ac1e1483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laurent=20L=C3=A9cluse?= <laurent.lecluse@unicaen.fr> Date: Wed, 6 Dec 2023 10:40:07 +0100 Subject: [PATCH] Gestion des NULL pour les CLOB et BLOB On ignore certains messages deprecated qu'on ne peut pas contourner --- src/Driver/Oracle/Driver.php | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/Driver/Oracle/Driver.php b/src/Driver/Oracle/Driver.php index d7cf6b8..8776ac6 100644 --- a/src/Driver/Oracle/Driver.php +++ b/src/Driver/Oracle/Driver.php @@ -106,24 +106,19 @@ class Driver implements DriverInterface foreach ($params as $key => $val) { $type = isset($types[$key]) ? $types[$key] : null; - switch ($type) { - case Bdd::TYPE_CLOB: - $dkey = oci_new_descriptor($this->connexion, OCI_D_LOB); - $dkey->writeTemporary($params[$key], OCI_TEMP_CLOB); - //${$key} = oci_new_descriptor($this->connexion, OCI_D_LOB); - //${$key}->writeTemporary($params[$key], OCI_TEMP_CLOB); - ${$key} = $dkey; - oci_bind_by_name($statement, ':' . $key, ${$key}, -1, OCI_B_CLOB); - break; - case Bdd::TYPE_BLOB: - ${$key} = oci_new_descriptor($this->connexion, OCI_D_LOB); - ${$key}->writeTemporary($params[$key], OCI_TEMP_BLOB); - oci_bind_by_name($statement, ':' . $key, ${$key}, -1, OCI_B_BLOB); - break; - default: - ${$key} = $val; - oci_bind_by_name($statement, ':' . $key, ${$key}); - break; + + if (Bdd::TYPE_CLOB === $type && !empty($val)) { + $dkey = @oci_new_descriptor($this->connexion, OCI_D_LOB); + $dkey->writeTemporary($params[$key], OCI_TEMP_CLOB); + ${$key} = $dkey; + oci_bind_by_name($statement, ':' . $key, ${$key}, -1, OCI_B_CLOB); + } elseif (Bdd::TYPE_BLOB === $type && !empty($val)) { + ${$key} = @oci_new_descriptor($this->connexion, OCI_D_LOB); + ${$key}->writeTemporary($params[$key], OCI_TEMP_BLOB); + oci_bind_by_name($statement, ':' . $key, ${$key}, -1, OCI_B_BLOB); + } else { + ${$key} = $val; + oci_bind_by_name($statement, ':' . $key, ${$key}); } } if (false === @oci_execute($statement, $this->commitMode)) { -- GitLab