2009-08-26 10 views
1

Je souhaite obtenir l'ID de la ligne insérée actuelle après l'exécution de la requête d'insertion.Postgresql/php

p.s .: J'utilise la base de données postgresql.

Répondre

0

Dans PG7, c'était pg_last_oid, les docs expliquent clairement comment obtenir le dernier identifiant de la nouvelle version de PG.

+0

lorsque cette requête est exécutée « INSERT INTO contacts (titre, nom, job_title, téléphone, e-mail) VALUES ('tes', 'test s/w ',' 0102365478 ',' [email protected] ',' 123 ') RETURNING id; " il résulte de l'erreur: Requête échouée: ERREUR: erreur de syntaxe à ou près de "RETOUR" –

+0

Je pense que cela devrait être un commentaire aux réponses de Garrow ou Milen A. Radev – RaYell

+0

désolé c'est un conflit. –

3

Si nous partons du principe que par « id » vous voulez dire une colonne qui est la clé primaire et est également déclarée série, alors vous devez ajouter un RETURNING à l'instruction INSERT:

INSERT INTO <table> (...) VALUES (...) RETURNING id; 

Et en PHP, vous pouvez traiter cette instruction comme une requête normale qui renvoie une ligne.

+0

lorsque cette requête est exécutée "INSERT INTO contacts (titre, nom, titre du travail, téléphone, email) VALEURS ('tes', 'test s/w', '0102365478', '[email protected]', '123') RETURNING id; " il en résulte l'erreur: Échec de la requête: ERREUR: erreur de syntaxe à ou près de "RETOUR" –

+0

Ce qui signifie probablement que vous utilisez une ancienne version (<8.2) de Postgres qui ne prend pas en charge RETURNING. Si possible, mise à niveau. –

+0

y a-t-il des solutions? J'ai essayé la méthode currval() mais cette erreur est apparue: "Requête échouée: ERROR: currval de la séquence" contacts_id_seq "n'est pas encore définie dans cette session" –