oci_bind_by_name

(PHP 5)

oci_bind_by_name --  Associe une variable PHP à une variable SQL Oracle

Description

bool oci_bind_by_name ( resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] )

oci_bind_by_name() relie la variable PHP variable à l'emplacement Oracle ph_name, dans la commande préparée stmt. Son utilisation (comme entrée ou comme sortie) sera définie à l'exécution, et l'espace nécessaire sera alloué. Le paramètre de longueur length fixe la taille maximum pour la liaison. Si vous affectez une longueur length de -1, oci_bind_by_name() utilisera la longueur de variable comme maximum maxlength.

Si vous devez lier des types abstraits de données (LOB/ROWID/BFILE), vous devrez l'allouer dans un premier temps, avec ocinewdescriptor(). La longueur length ne sert pas pour ces types et devrait être fixée à -1. La variable type indique au serveur Oracle, quel type de pointeur va être utilisé. Les valeurs possibles sont :

  • SQLT_FILE - Pour BFILEs;

  • SQLT_CFILE - Pour CFILEs;

  • SQLT_CLOB - Pour CLOBs;

  • SQLT_BLOB - Pour BLOBs;

  • SQLT_RDD - Pour ROWIDs;

  • SQLT_NTY - Pour les types de données nommés.

  • SQLT_INT - pour les entiers.

  • SQLT_CHR - pour les VARCHARs.

  • SQLT_BIN - pour les colonnes RAW.

  • SQLT_LNG - pour les colonnes LONG.

  • SQLT_LBI - pour les colonnes LONG RAW.

  • SQLT_RSET - pour les curseurs, qui ont été créés auparavant avec la fonction oci_new_cursor().

Exemple 1. Exemple avec oci_bind_by_name()

<?php
/* Exemple ociBindByPos par thies@thieso.net (980221)
  Insère 3 lignes dans emp, et utilise ROWID pour mettre à jour
  les lignes, juste après l'insertion.
*/

$conn = oci_connect("scott", "tiger");

$stmt = oci_parse($conn, "
                         INSERT INTO
                                     emp (empno, ename)
                                             VALUES
                                     (:empno,:ename)
                           RETURNING
                                     ROWID
                                 INTO
                                     :rid
                                         "
);

$data = array(
            
1111 => "Larry",
            
2222 => "Bill",
            
3333 => "Jim"
            
);

$rowid = oci_new_descriptor($conn, OCI_D_ROWID);

oci_bind_by_name($stmt, ":empno", $empno, 32);
oci_bind_by_name($stmt, ":ename", $ename, 32);
oci_bind_by_name($stmt, ":rid"$rowid, -1, OCI_B_ROWID);

$update = oci_parse($conn, "
                           UPDATE
                                 emp
                               SET
                                 sal = :sal
                             WHERE
                                 ROWID = :rid
                             "
);
oci_bind_by_name($update, ":rid", $rowid, -1, OCI_B_ROWID);
oci_bind_by_name($update, ":sal", $sal32);

$sal = 10000;

foreach (
$data as $empno => $ename) {
  
oci_execute($stmt);
  
oci_execute($update);
}

$rowid->free();

oci_free_statement($update);
oci_free_statement($stmt);

$stmt = oci_parse($conn, "
                         SELECT
                               *
                           FROM
                               emp
                           WHERE
                               empno
                             IN
                               (1111,2222,3333)
                             "
);
oci_execute($stmt);
                            
while (
$row = oci_fetch_assoc($stmt)) {
  
var_dump($row);
}

oci_free_statement($stmt);

/* delete our "junk" from the emp table.... */
$stmt = oci_parse($conn, "
                         DELETE FROM
                                     emp
                               WHERE
                                     empno
                                   IN
                                     (1111,2222,3333)
                                   "
);
oci_execute($stmt);
oci_free_statement($stmt);

oci_close($conn);
?>

N'oubliez pas que cette fonction supprime les caractères d'espace terminaux. Par exemple :

Exemple 2. oci_bind_by_name() et les caractères d'espace terminaux

<?php
   $connection
= oci_connect('apelsin','kanistra');
  
$query = "INSERT INTO test_table VALUES(:id, :text)";

  
$statement = oci_parse($query);
  
oci_bind_by_name($statement, ":id", 1);
  
oci_bind_by_name($statement, ":text", "trailing spaces follow    ");
  
oci_execute($statement);
  
/*
     Ce code va insérer la chaîne 'trailing spaces follow',
     sans les espaces terminaux.
   */
?>

Exemple 3. oci_bind_by_name() et les caractères d'espace terminaux (2)

<?php
   $connection
= oci_connect('apelsin','kanistra');
  
$query = "INSERT INTO test_table VALUES(:id, 'trailing spaces follow      ')";

  
$statement = oci_parse($query);
  
oci_bind_by_name($statement, ":id", 1);
  
oci_execute($statement);
  
/*
     Ce code va insérer la chaîne 'trailing spaces follow      ',
     avec les espaces terminaux.
   */
?>

Avertissement

C'est une mauvaise idée que d'utiliser les magic_quotes_gpc et la fonction oci_bind_by_name() simultanément, car aucun ajout de guillemets n'est nécessaire sur les variables citées, et tout guillemet magique sera inscrit dans votre base de données car oci_bind_by_name() n'est pas capable de faire la différence entre les guillemets et ceux qui ont été ajoutés dynamiquement.

Cette fonction retourne TRUE en cas de succès, FALSE en cas d'échec.

Note : Dans les versions de PHP antérieures à la version 5.0.0, vous devez utiliser la fonction ocibindbyname(). Cet ancien nom est toujours utilisable : un alias a été fait vers la fonction oci_bind_by_name(), pour assurer la compatibilité ascendante. Toutefois, il est recommandé de ne plus l'utiliser.



Rechercher une fonction PHP

Réseaux sociaux

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher les interactions avec les réseaux sociaux sur ces pages.

 

Nuage de mots clés

5 mots clés dont 0 définis manuellement (plus d'information...).

Avertissement

Cette page ne possède pas encore de mots clés manuels, ceci est donc un exemple automatique (les niveaux de pertinence sont fictifs, mais les liens sont valables). Pour tester le nuage avec une page qui contient des mots définis manuellement, vous pouvez cliquer ici.

Vous pouvez modifier vos préférences dans votre profil pour ne plus afficher le nuage de mots clés.

 

Références

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

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.

 

Astuce pour imprimer les couleurs des cellules de tableaux : http://www.gaudry.be/ast-rf-450.html
Aucun commentaire pour cette page

© Ce document issu de l′infobrol est enregistré sous le certificat Cyber PrInterDeposit Digital Numbertection. Enregistrement IDDN n° 5329-4810
Document créé le 30/10/06 01:26, dernière modification le Vendredi 17 Juin 2011, 12:12
Source du document imprimé : http://www.gaudry.be/php-rf-function.oci-bind-by-name.html Document affiché 1 fois ce mois de Juin.
St.Gaudry©07.01.02
Outils (masquer)
||
Recherche (afficher)
Recherche :

Utilisateur (masquer)
Navigation (masquer)
Apparence (afficher)
Stats (afficher)
15832 documents
452 astuces.
549 niouzes.
3099 definitions.
447 membres.
8115 messages.

Document genere en :
0,28 seconde

Mises à jour :
Mises à jour du site
Citation (masquer)
Il n'est pauvreté que d'ignorance.

Le Talmud
 
l'infobrol
Nous sommes le Dimanche 03 Juin 2012, 00:52, toutes les heures sont au format GMT+1.00 Heure, heure d'été (+1)