Получить последний идентификатор вставки после подготовленной вставки с PDO

Я использую PHP PDO с PostgreSQL для нового проекта.

Учитывая следующую функцию, как я могу вернуть идентификатор только что вставленной строки? Теперь он не работает так, как он выглядит.

function adauga_administrator($detalii) { global $db; $ultima_logare = date('Ym-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; } 

Related of "Получить последний идентификатор вставки после подготовленной вставки с PDO"

Из руководства :

Возвращает идентификатор последней вставленной строки или последнее значение из объекта последовательности, в зависимости от базового драйвера. Например, PDO_PGSQL () требует указать имя объекта последовательности для параметра name.

Это должно быть что-то вроде:

 return $db->lastInsertId('yourIdColumn'); 

Из руководства по PHP:

Например, PDO_PGSQL () требует указать имя объекта последовательности для параметра name.

Вы также можете использовать RETURNING в инструкции INSERT и получить результат INSERT, как результат SELECT.

Предыдущие ответы не очень ясны (PDO doc тоже)

В postgreSQL последовательности создаются, когда вы используете тип данных SERIAL .

 CREATE TABLE ingredients ( id SERIAL PRIMARY KEY, name varchar(255) NOT NULL, ); 

Таким образом, имя последовательности будет ingredients_id_seq

 $db->lastInsertId('ingredients_id_seq');