Page 1 sur 1

Php - Postgresql: select currval(sequence)

Posté : 27 avr. 2006, 09:41
par bzayid
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.

Posté : 27 avr. 2006, 10:46
par bzayid
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

Posté : 27 avr. 2006, 11:43
par bzayid
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

:?:

Posté : 27 avr. 2006, 11:45
par ouckileou
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)

Posté : 28 avr. 2006, 10:22
par bzayid
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 ;)