Oracle / OCI / Fonctionnement d'OCI-Lob - PHP - Programmation
Marsh Posté le 22-11-2007 à 15:19:36
Je dirais que c'est parce qu'en fait à chaque fetch le OCI-Lob est réinitialisé, du coup quand t'es en dehors de la boucle ça marche plus
Marsh Posté le 22-11-2007 à 15:32:15
ratibus a écrit : Je dirais que c'est parce qu'en fait à chaque fetch le OCI-Lob est réinitialisé, du coup quand t'es en dehors de la boucle ça marche plus |
Bah non, c'est pire que ça...l'instance d'OCI-Lob est la même à chaque tour de la boucle, et maintient un pointeur de position dans le bouzin et ce genre de conneries...
Du coup si on ne fait pas de read(), il semblerait qu'on se retrouve à la fin dans le même état qu'au départ...sauf qu'un read() ne rétablit plus la situation, parce-que le parcours des lignes de résultats est terminé...
Bref, oci_fetch_object n'est pas utilisable dans le contexte que je voulais, à moins de bidouiller...
Marsh Posté le 22-11-2007 à 15:34:31
skeye a écrit : |
Oui faut faire le read dans le while, ça pose souci ?
Marsh Posté le 22-11-2007 à 15:36:51
ratibus a écrit :
|
oui.
A la base tout ça est dans une fonction qui ne sait pas le contenu de $sql. Donc pas s'il y a un blob, ni quel paramètre c'est.
Bref, c'est faisable : je récupère le type de tous les champs avec oci_field_type, et je traite différemment tous les champs BLOB...mais pour le coup c'est vraiment de l'overkill par rapport à oci_fetch_array($stmt, OCI_RETURN_LOBS)...
(d'ailleurs si quelqu'un pouvait m'expliquer pourquoi seul fetch_array a droit à ce paramètre ça m'intéresse )
Marsh Posté le 22-11-2007 à 16:22:48
skeye a écrit : |
Faudrait effectuer un instanceof OCI-Lob sur tous les champs effectivement
Marsh Posté le 22-11-2007 à 16:24:25
ratibus a écrit : |
oui, ben au-secours.
Marsh Posté le 22-11-2007 à 16:30:36
skeye a écrit : |
Boh ça va c'est pas crade je trouve
Et ca te permet de pas avoir à faire tes ->read() et ->size() après le while
Marsh Posté le 22-11-2007 à 16:35:25
ratibus a écrit :
|
Moué...moi je trouve ça moche.
Marsh Posté le 22-11-2007 à 16:39:38
Allez cadeau (à tester, j'ai pas d'Oracle ici) :
Code :
|
Marsh Posté le 22-11-2007 à 16:47:29
ratibus a écrit : Allez cadeau (à tester, j'ai pas d'Oracle ici) :
|
Nan mais je sais faire, hein, ça.
Je voulais juste vérifier que je biglais pas, et qu'il était bien impossible de traiter les lobs comme les autres champs avec oci_fetch_object...
Marsh Posté le 22-11-2007 à 14:50:52
Hopla, un topic au cas où certains pourraient confirmer les résultats que j'obtiens avec cet objet de satan.
J'ai une table dans une base oracle, avec des photos de gens dedans, dans un blob.
Le code suivant fonctionne (affiche la photo de mon numéro 12):
mais pas celui-là (affiche la photo de mon numéro 0):
ok, lol.
Donc si quelqu'un sait m'expliquer pourquoi, et comment faire marcher la 2eme version (le problème étant forcément un poil plus compliqué que l'exemple dans la vraie vie), je lui devrai une fière bretelle.
NB : oci_fetch_array($toto, OCI_RETURN_LOBS) fonctionne mais n'est pas une réponse considérée satisfaisante, merci!
Message édité par skeye le 22-11-2007 à 14:53:37
---------------
Can't buy what I want because it's free -