Php - Postgresql: select currval(sequence)

Eléphanteau du PHP | 42 Messages

27 avr. 2006, 09:41

Bonjour,

Voilà, j'essaie de récupérer en PHP la valeur de mon id auto-increment après avoir fait un INSERT dans une DB Postgresql.

Pour cela, je fais après mon insert:

$new_id = pg_query("SELECT currval('action_id')");

où action_id est le nom de ma séquence.

voici l'erreur:

Warning: pg_query(): Query failed: ERROR: relation "action_id" does not exist

Merci d'avance.

Eléphanteau du PHP | 42 Messages

27 avr. 2006, 10:46

j'ai modifié ma requete comme ceci:

select currval(action_accn) from action;

(je me suis trompé dans le nom de la séquence et j'ai ajouté 'from action')

et là j'ai ce message d'erreur

Query failed: ERROR: could not open relation with OID 31

31 étant bien la valeur courrante de l'id après l'insert

Eléphanteau du PHP | 42 Messages

27 avr. 2006, 11:43

bon j'avance petit à petit :D

donc ok ça marche
$new_id = pg_query("SELECT currval('actionid')");
mais voilà ce que je récupère comme valeur

Resource id #7

:?:
Modifié en dernier par bzayid le 27 avr. 2006, 11:45, modifié 1 fois.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

27 avr. 2006, 11:45

Regarde ce que renvoie cette fonction : http://fr.php.net/pg_query

Regarde les exemples, et les liens "Voir aussi" (clique sur les liens et regarde ce que font les fonctions)

Eléphanteau du PHP | 42 Messages

28 avr. 2006, 10:22

Enfin, ça marche !

Pour ceux (les débutants comme moi) qui pourraient avoir le même problème voici comment récupérer la valeur en php.

Après un INSERT, faire:
$tab = pg_fetch_array(pg_query("SELECT currval('actionid') as new_id"));
$new_id = $tab["new_id"];
où "actionid" est le nom de ma séquence

Merci pour votre aide ;)