Rechercher une fonction PHP

oci_define_by_name

(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)

oci_define_by_nameAssocie une variable PHP avec une colonne pour une requête de récupération de données

Description

bool oci_define_by_name ( resource $statement , string $column_name , mixed &$variable [, int $type = SQLT_CHR ] )

Associe une variable PHP avec une colonne pour une requête de récupération de données utilisant la fonction oci_fetch().

L'appel à la fonction oci_define_by_name() doit s'effectuer avant l'exécution de la fonction oci_execute().

  

Liste de paramètres

statement

Un identifiant de requête OCI8 créé par la fonction oci_parse() et exécuté par la fonction oci_execute(), ou un identifiant de requête REF CURSOR.

column_name

Le nom de la colonne utilisé dans la requête.

Utilisez un nom en majuscule, pour les noms de colonne non sensibles à la casse (par défaut sous Oracle). Utilisez la casse exacte du nom de la colonne pour les noms de colonne sensibles à la casse.

variable

La variable PHP qui contiendra la valeur retournée par la colonne.

type

Le type de données à retourner. En général, ce paramètre n'est pas nécessaire. Notez que le style Oracle de conversion de données n'est pas appliqué ici. Par exemple, SQLT_INT sera ignoré et le type de données retourné sera SQLT_CHR.

Vous pouvez utiliser, optionnellement, la fonction oci_new_descriptor() pour allouer des descripteurs LOB/ROWID/BFILE.

  

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

  

Exemples

Exemple #1 Exemple avec oci_define_by_name()

<?php

$conn 
oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$sql 'SELECT location_id, city FROM locations WHERE location_id < 1200';
$stid oci_parse($conn$sql);

// Les définitions DOIVENT être faîtes avant l'exécution de la requête
oci_define_by_name($stid'LOCATION_ID'$locid);
oci_define_by_name($stid'CITY'$city);

oci_execute($stid);

// Chaque récupération peuple les variables précédemment définies avec les données de la prochaine ligne
while (oci_fetch($stid)) {
    echo 
"Location id $locid is $city<br>\n";
}

// Affiche :
//   Location id 1000 is Roma
//   Location id 1100 is Venice

oci_free_statement($stid);
oci_close($conn);

?>

Exemple #2 Exemple avec oci_define_by_name() et des noms de colonne sensibles à la casse

<?php

/*
  Avant exécution, créez la table suivant avec un nom de colonne sensible à la casse :
    CREATE TABLE mytab (id NUMBER, "MyDescription" VARCHAR2(30));
    INSERT INTO mytab (id, "MyDescription") values (1, 'Iced Coffee');
    COMMIT;
*/

$conn oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid oci_parse($conn'SELECT * FROM mytab');

// Utilisez des majuscules pour les noms de colonne insensibles à la casse
oci_define_by_name($stid'ID'$id);

// Utilisez la casse exacte pour les noms de colonnes sensibles à la casse
oci_define_by_name($stid'MyDescription'$mydesc);

oci_execute($stid);

while (
oci_fetch($stid)) {
    echo 
"id $id is $mydesc<br>\n";
}

// Affiche :
//   id 1 is Iced Coffee

oci_free_statement($stid);
oci_close($conn);

?>

Exemple #3 Exemple avec oci_define_by_name() et des colonnes de type LOB

<?php

/*
  Avant exécution, créez la table suivante :
    CREATE TABLE mytab (id NUMBER, fruit CLOB);
    INSERT INTO mytab (id, fruit) values (1, 'apple');
    INSERT INTO mytab (id, fruit) values (2, 'orange');
    COMMIT;
*/

$conn oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid oci_parse($conn'SELECT * FROM mytab');

// Les définitions DOIVENT être effectuées avant l'exécution
oci_define_by_name($stid'ID'$id);
oci_define_by_name($stid'FRUIT'$fruit);  // $fruit will become a LOB descriptor

oci_execute($stid);

while (
oci_fetch($stid)) {
    echo 
$id " is " $fruit->load(100) . "<br>\n";
}

// Affiche :
//   1 is apple
//   2 is orange

$fruit->free();
oci_free_statement($stid);
oci_close($conn);

?>

Exemple #4 Exemple avec oci_define_by_name() et un type explicite

<?php

/*
  Avant exécution, créez la table suivante :
    CREATE TABLE mytab (id NUMBER, fruit CLOB);
    INSERT INTO mytab (id, fruit) values (1, 'apple');
    INSERT INTO mytab (id, fruit) values (2, 'orange');
    COMMIT;
*/

$conn oci_connect('hr''welcome''localhost/XE');
if (!
$conn) {
    
$e oci_error();
    
trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR);
}

$stid oci_parse($conn'SELECT * FROM mytab');

// Les définitions DOIVENT être faîtes avant exécution
oci_define_by_name($stid'ID'$id);

$fruit oci_new_descriptor($connOCI_D_LOB);
oci_define_by_name($stid'FRUIT'$fruitOCI_D_CLOB);

oci_execute($stid);

while (
oci_fetch($stid)) {
    echo 
$id " is " $fruit->load(100) . "<br>\n";
}

// Affiche :
//   1 is apple
//   2 is orange

$fruit->free();
oci_free_statement($stid);
oci_close($conn);

?>

  

Voir aussi

  • oci_fetch() - Lit la prochaine ligne d'un résultat Oracle dans un buffer interne
  • oci_new_descriptor() - Initialise un nouveau pointeur vide de LOB/FILE Oracle

Rechercher une fonction PHP

Version en cache

23/12/2024 18:18:33 Cette version de la page est en cache (à la date du 23/12/2024 18:18:33) afin d'accélérer le traitement. Vous pouvez activer le mode utilisateur dans le menu en haut pour afficher la dernère version de la page.

Document créé le 30/01/2003, dernière modification le 26/10/2018
Source du document imprimé : https://www.gaudry.be/php-rf-oci-define-by-name.html

L'infobrol est un site personnel dont le contenu n'engage que moi. Le texte est mis à disposition sous licence CreativeCommons(BY-NC-SA). Plus d'info sur les conditions d'utilisation et sur l'auteur.

Références

  1. Consulter le document html Langue du document :fr Manuel PHP : http://php.net

Ces références et liens indiquent des documents consultés lors de la rédaction de cette page, ou qui peuvent apporter un complément d'information, mais les auteurs de ces sources ne peuvent être tenus responsables du contenu de cette page.
L'auteur de ce site est seul responsable de la manière dont sont présentés ici les différents concepts, et des libertés qui sont prises avec les ouvrages de référence. N'oubliez pas que vous devez croiser les informations de sources multiples afin de diminuer les risques d'erreurs.

Table des matières Haut