Bonjour / Bonsoir à tous
Je travaille actuellement sur une base Oracle à partir de php5.
Mon problème actuel est de récupérer l'ID d'un nouvel enregistrement lors d'un INSERT.
Soit une table Oracle de la forme :
J'ai également un trigger et une séquence liée à cette table pour gérer l'auto incrémente (tout ça fonctionne).maTable
----------------
| id | strValue |
----------------
J'aimerai donc avoir un code de la sorte :
Mon problème est que ma variable $myId ne contient QUE les 3 premiers charactères de la valeur attendue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 $sql = "INSERT INTO maTable (id, strValue) VALUES (sq_matable.NEXTVAL, 'strNulle') RETURNING ID INTO :myId" $stmt = oci_parse($connectOracle, $sql); oci_bind_by_name($statement, ':myId', $myId); oci_execute($stmt , OCI_DEFAULT); oci_free_statement($stmt ); echo $myId;
En revanche, si j'initialise ma variable avant de lui affecter la valeur retournée
Alors ma variable contient bien la valeur de mon ID.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $myId=0123456789; oci_bind_by_name($statement, ':myId', $myId);
Il semblerai donc qu'il s'agisse d'un problème d'allocation de mémoire du côté de PHP.
Mais je ne sais pas comment initialiser ma variable avec une taille fixe ou variable pour être sûre de récupérer la valeur de cet ID même dans 10 ans (quand l'incrément aura atteind des valeurs très grandes).
Existe-t-il donc une façon de faire pour récupérer ce fameux ID ?
Merci à tous ceux qui pourront m'aider![]()
Partager