When using OCI_RETURN_LOBS to get a BFILE (stored with a DIRECTORY) the user needs READ on the DIRECTORY. (GRANT READ on DIRECTORY <directory name> TO <user>;) Otherwise, you'll get a cryptic error. Warning: OCILobFileOpen: ORA-22285: non-existent directory or file for FILEOPEN operation in ... on line ...
<BR>
The user that CREATEs the DIRECTORY is automatically GRANTed READ WITH THE GRANT OPTION.
oci_fetch_array
(PHP 5, PECL oci8 >= 1.1.0)
oci_fetch_array — Lit une ligne d'un résultat Oracle sous forme de tableau
Description
Retourne un tableau, qui correspond à la prochaine ligne du résultat.
Pour plus de détails sur le mapping des types de données effectué par le driver oci8, lisez les types de données supportés par le driver
Il faut mentionner ici que oci_fetch_array() n'est pas significativement plus lente que oci_fetch_row(), mais bien plus pratique.
Liste de paramètres
- statement
-
Un identifiant de requête OCI valide.
- mode
-
Le paramètre optionnel mode peut être la combinaison des constantes suivantes :
- OCI_BOTH - retourne une tableau, indexé numériquement et avec les noms de colonnes. Identique à OCI_ASSOC + OCI_NUM). C'est le comportement par défaut.
- OCI_ASSOC - retourne un tableau associatif. C'est le même comportement que celui de la fonction oci_fetch_assoc().
- OCI_NUM - retourne un tableau indexé numériquement, C'est le même comportement que celui de la fonction oci_fetch_row().
- OCI_RETURN_NULLS - Crée des éléments vides pour les valeurs NULL.
- OCI_RETURN_LOBS - Retourne la valeur du LOB.
La configuration par défaut de mode est OCI_BOTH.
Valeurs de retour
Retourne un tableau avec des indices associatifs et numériques, ou FALSE s'il n'y a plus de ligne dans la requête statement .
Note: Cette fonction définit les champs NULL à la valeur PHP NULL.
Note: Oracle retourne tous les noms de champs en majuscules, et les noms des index du tableau résultant seront donc aussi en majuscules.
Exemples
Exemple #1 Exemple avec oci_fetch_array() avec OCI_BOTH
<?php
$connection = oci_connect("apelsin", "kanistra");
$query = "SELECT id, name FROM fruits";
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
while ($row = oci_fetch_array ($statement, OCI_BOTH)) {
echo $row[0]." and ".$row['ID']." sont identiques<br>";
echo $row[1]." and ".$row['NAME']." sont identiques<br>";
}
?>
Exemple #2 Exemple avec oci_fetch_array() avec OCI_NUM
<?php
$connection = oci_connect("user", "password");
$query = "SELECT id, name, lob_field FROM fruits";
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
while ($row = oci_fetch_array ($statement, OCI_NUM)) {
echo $row[0]."<br>";
echo $row[1]."<br>";
echo $row[2]->read(100)."<br>"; //Affiche les 100 premiers bytes du LOB
}
?>
Exemple #3 Exemple avec oci_fetch_array() avec OCI_ASSOC
<?php
$connection = oci_connect("user", "password");
$query = "SELECT id, name, lob_field FROM fruits";
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
while ($row = oci_fetch_array ($statement, OCI_ASSOC)) {
echo $row['ID']."<br>";
echo $row['NAME']."<br>";
echo $row['LOB_FIELD']."<br>"; //Affiche "Object id #1"
}
?>
Exemple #4 Exemple avec oci_fetch_array() avec OCI_RETURN_LOBS
<?php
$connection = oci_connect("user", "password");
$query = "SELECT id, name, lob_field FROM fruits";
$statement = oci_parse ($connection, $query);
oci_execute ($statement);
while ($row = oci_fetch_array ($statement, (OCI_NUM+OCI_RETURN_LOBS))) {
echo $row[0]."<br>";
echo $row[1]."<br>";
echo $row['LOB_FIELD']."<br>"; //Affiche le contenu du LOB
}
?>
Voir aussi
- oci_fetch_assoc() - Lit une ligne d'un résultat Oracle sous forme de tableau associatif
- oci_fetch_object() - Lit une ligne d'un résultat Oracle sous forme d'objet
- oci_fetch_row() - Lit une ligne d'un résultat Oracle sous forme de tableau numérique
- oci_fetch_all() - Lit toutes les lignes d'un résultat Oracle
oci_fetch_array
09-Aug-2002 07:29
