Insertion de plusieurs BLOB dans une table ORACLE avec PDO
Bonjour,
Je suis en cours de réalisation d'une application pour laquelle certaines des tables contiennent plusieurs BLOB.
En fait, je l'avais écrite avec PostgreSQL en cible, mais il faudrait que ça fonctionne avec les 2. J'ai rendu l'appli (assez) portable, mais je bloque sur un point.
Je vous passe la galère d'insertion de BLOB ou CLOB dans ORACLE avec PHP/PDO, alors que c'est si naturel avec postgresql...
Ca va encore quand il n'y a qu'un seul BLOB, je fait:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
<?php
// ....
$message = 'plop'; // exemple
$cnx = $this->_hcnx->handle(); // un handle de connexion PDO fourni par la classe de connexion
if ($this->_hcnx->get_driver() == "ORACLE" ) {
$qry =
" update pp_traitement"
." set"
." trt_nombre_traites=:nbre"
." ,trt_termine='Y'"
." ,trt_ts_fin=CURRENT_TIMESTAMP"
." ,trt_commentaire=EMPTY_BLOB()" // --- ça c'est un CLOB ou plutot un BLOB, cf. ci-dessous
." where"
." trt_id=:trt_id"
." RETURNING trt_commentaire INTO :com"
;
$cnx->beginTransaction();
$sth = $cnx->prepare($qry, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->bindValue(':trt_id', $this->_id_traitement);
$sth->bindValue(':nbre', $lignes);
$clob = null;
$sth->bindParam(':com', $clob, PDO::PARAM_LOB);
$sth->execute();
fwrite( $clob, nl2br($message)); // par exemple
fclose( $clob );
$cnx->commit();
}
// ....
?> |
et ça fonctionne.
Bon, je trouve ça bien lourd et j'ai été obligé de déclarer les colonnes en BLOB alors que ce sont des CLOB (sinon message d'erreur) mais passons. Le problème est quand j'ai deux colonnes ou plus en BLOB dans la même table (par exemple une image et un grand commentaire).
je ne vois pas comment gérer la partie de la requete :
Code:
1 2 3 4
|
<?php
." RETURNING trt_commentaire INTO :com"
?> |
étant donné que je ne peux retourner qu'une valeur (enfin sous cette forme, je suppose).
L'un d'entre vous a-t-il été confronté à ce problème ? A-t-il une solution ?
Merci.