Obtenir le dernier id inséré après un insert avec PDO
Je suis en utilisant PHP PDO avec PostgreSQL pour un nouveau projet.
Compte tenu de la fonction suivante, comment puis-je retourner l'id de la ligne juste inséré?
Il ne fonctionne pas de la façon dont il regarde maintenant.
function adauga_administrator($detalii) {
global $db;
$ultima_logare = date('Y-m-d');
$stmt = $db->prepare("INSERT INTO site_admins (sa_nume, sa_prenume, sa_user_name, sa_password, sa_email, sa_id_rol, sa_status, sa_ultima_logare) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bindParam(1, $detalii['nume']);
$stmt->bindParam(2, $detalii['prenume']);
$stmt->bindParam(3, $detalii['username']);
$stmt->bindParam(4, md5(md5($detalii['parola'] . SIGURANTA_PAROLE) . SIGURANTA_PAROLE));
$stmt->bindParam(5, $detalii['email']);
$stmt->bindParam(6, $detalii['rol'], PDO::PARAM_INT);
$stmt->bindParam(7, $detalii['status'], PDO::PARAM_INT);
$stmt->bindParam(8, $ultima_logare);
$stmt->execute();
$id = $db->lastInsertId();
return $id;
}
- Aussi appeler comme -
return $db->lastInsertId($stmt);
Vous devez vous connecter pour publier un commentaire.
De la Manuel:
Il devrait être quelque chose comme:
[MODIFIER] lien de mise à Jour de la doc
\d tablename
m'a montréid | integer | not null default nextval('addr_source_id_seq'::regclass)
, j'ai misaddr_source_id_seq
et le tour est joué! Donc dans mon cas ce n'était pastable_column_seq
ligne.De la PHP manuel:
Vous pouvez également utiliser De RETOUR dans la notice-déclaration et de l'extraction de l'INSERT, comme résultat d'un SELECT résultat.
Des réponses précédentes ne sont pas très claires (AOP doc trop)
Dans postgreSQL, les séquences sont créés lorsque vous utilisez le
SERIAL
type de données.De sorte que le nom de la séquence sera
ingredients_id_seq