Bonjour, j'ai un problème super zarb avec php et le driver pdo oci.
En gros, je me connecte a la base, je fais une requete basique, un fetchall et j'affiche. le problème, c'est que rien n'est affiché. Aucun message d'erreur, rien.

La ou c'est vraiment fun, c'est que si je fait un "flush()" mettons au milieu du fichier, il m'affiche tout ce qui était avant.
Si le flush est ma derniere commande, tout est affiché.
Si le flush est ma derniere commande php est que derriere, j'ai encore un peu de html pur, tout est affiché jusqu'au flush, mais pas le html se trouvant derriere.

ob_end_flush(); ne donne rien.

La table que je tente de lire contient un BLOB. Si j'utilise le même code sans lire de BLOB, ca passe correctement.

Voici l'intégralité du code pour reproduire le problème :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35
36
37
38
39
40
<body>
<?php
 
$dsn = "oci:dbname=10.199.2.30/oradev1;host=";
$login = "root";
$pass = "root";
 
try
{
	$db = new PDO($dsn, $login, $pass);
	echo ("<u>Connection établie : </u><br />\n");
	echo ("dsn = " . $dsn . "<br />\n");
	echo ("login=" . $login . " - pass=" . $pass . "<br />\n");
} 
catch (PDOException $e) {
	printf("Erreur a la connection : %s\n", $e->getMessage()); 
}
 
$sql = 'SELECT "content" FROM "f_locale" WHERE "id" = :id AND "lang" = :lang';
$key = 'modules.auth.backoffice.front.logintitle';
$lang = 'fr';
$stmt = $db->prepare($sql);
$stmt->bindValue(':id', $key, PDO::PARAM_STR);
$stmt->bindValue(':lang', $lang, PDO::PARAM_STR);
$stmt->bindColumn('content', $results[0]['content'], PDO::PARAM_LOB);
if (!$stmt->execute()) {$this->showError($stmt);}
$results = $stmt->fetchAll();
 
if (count($results) > 0)
{
	$streamContent = stream_get_contents($results[0]['content']);
	fclose($results[0]['content']);	
	echo $streamContent;
} else {
	echo ("Il n'y a aucun résultat pour la requête.");	
}
echo ("<br />");
?>
Hello world !
</body>
La table "f_locale" ressemble a ca :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
"id" NOT NULL VARCHAR2(256) 
"lang" NOT NULL CHAR(2) 
"package" VARCHAR2(256) 
"overridden" NUMBER(10)
"overridable" NUMBER(10) 
"content" BLOB
Merci a quiconque aurait un début de piste, parce que j'en viens a me demander si ce n'est pas pdo_oci qui est completement buggé... (Apparament, les CLOB ne sont même pas géré, ce qui m'incite a penser que ce driver n'est pas franchement stabilisé, et le "Ce module est EXPERIMENTAL." qui est sur cette page a tendance a me faire un peu peur.
Ceci dit, dans la mesure ou le but est de migrer une appli sous mysql vers du oracle et que l'appli en question est faite avec pdo (justement pour être "portable" ) je suis obligé d'utiliser pdo.

Bref, a l'aide...