[turba] [patch] fix oracle clob support

Matt Selsky selsky at columbia.edu
Fri Aug 13 01:26:53 PDT 2004


The attached patch fixes Oracle CLOB support in Turba v1.2.2.  Bind 
variables must be used in order to allow Oracle to take advantage of 
CLOBs and be able to fix more than 4K of data in CLOB fields.

This patch is not database specific.

See also http://bugs.horde.org/ticket/?id=443
-------------- next part --------------
--- /src/acis/cubmail/v2.5/src/horde/turba/lib/Driver/sql.php	2003-02-09 20:18:10.000000000 -0500
+++ /etc/httpd/htdocs/horde/turba/lib/Driver/sql.php	2004-08-13 04:14:20.687424000 -0400
@@ -197,13 +197,14 @@
         $values = array();
         foreach ($attributes as $field => $value) {
             $fields[] = $field;
-            $values[] = $this->db->quote($value);
+            $values[] = $value;
         }
 
         $query  = 'INSERT INTO ' . $this->table . ' (' . implode(', ', $fields) . ')';
-        $query .= ' VALUES (' . implode(', ', $values) . ')';
+        $query .= ' VALUES (' . str_repeat('?, ', count($values) - 1) . '?)';
 
-        $result = $this->db->query($query);
+        $sth = $this->db->prepare($query);
+        $result = $this->db->execute($sth,$values);
         return DB::isError($result) ? $result : true;
     }
 
@@ -228,15 +229,21 @@
         $where = $object_key . ' = ' . $this->db->quote($object_id);
         unset($attributes[$object_key]);
 
-        $set = array();
+        $fields = array();
+        foreach ($attributes as $field => $value) {
+            $fields[] = $field . ' = ?';
+        }
+
+        $values = array();
         foreach ($attributes as $field => $value) {
-            $set[] = $field . ' = ' . $this->db->quote($value);
+            $values[] = $value;
         }
 
-        $query  = 'UPDATE ' . $this->table . ' SET ' . implode(', ', $set) . ' ';
+        $query  = 'UPDATE ' . $this->table . ' SET ' . implode(', ', $fields) . ' ';
         $query .= 'WHERE ' . $where;
 
-        $result = $this->db->query($query);
+        $sth = $this->db->prepare($query);
+        $result = $this->db->execute($sth, $values);
 
         return (!DB::isError($result));
     }


More information about the turba mailing list